Wp_redirect și trimiterea variabilelor
Cum să trimit variabile cu wp_redirect() din fișierul function.php din directorul temei mele?
if ( $post_id ) {
$variable_to_send = '1';
wp_redirect( home_url(), $variable_to_send );
exit;
}
Iar pe pagina principală voi prelua variabila într-o condiție if-else pentru a afișa sau nu o confirmare în funcție de valoarea lui $variable_to_send
dacă este '1' sau nu.
Cum se poate face acest lucru în WordPress?
Am întârziat la petrecere cu acest lucru, dar modul "Wordpress" de a face acest lucru ar fi să folosești add_query_arg
astfel:
if ( $post_id ) {
wp_redirect( esc_url( add_query_arg( 'variable_to_send', '1', home_url() ) ) );
exit;
}
Aceasta va iniția o redirecționare către http://my.website/?variable_to_send=1
. Vei putea captura variabila apoi pe pagina principală (sau pe pagina de blog, în funcție de cum este configurat home_url()
) accesând $_GET['variable_to_send']
în codul tău PHP.
Dacă intenționezi să faci acest lucru în functions.php
, asigură-te că te conectezi la init
sau la un cârlig similar timpuriu, altfel vei primi o eroare "Headers already sent".
Sper că acest lucru îi va ajuta pe cei care dau peste acest post.

Îmi pare rău, dar nu poți face lucrurile în acest fel.
wp_redirect
este o metodă avansată de a trimite header-ul Location
, iar al doilea argument al acestei funcții reprezintă statusul cererii, nu o variabilă personalizată. (404, 301, 302 și așa mai departe).
Poți trimite variabile ca parametri GET. Deci poți face ceva de genul acesta:
if ( $post_id ) {
$variable_to_send = '1';
wp_redirect( home_url() .'?my_variable='.$variable_to_send );
exit;
}
Apoi poți folosi aceste variabile ca $_GET['my_variable']
sau să le înregistrezi ca variabilă GET personalizată.

Trebuie să folosești add_query_arg pentru a face asta în stilul WordPress.
