Wp_redirect și trimiterea variabilelor

5 aug. 2013, 22:41:27
Vizualizări: 42.7K
Voturi: 15

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?

0
Toate răspunsurile la întrebare 2
1
16

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.

23 mar. 2017 15:48:30
Comentarii

Dacă redirecționezi către o adresă locală, ar trebui să folosești wp_safe_redirect().

Nathan Johnson Nathan Johnson
23 mar. 2017 17:17:59
3
14

Î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ă.

5 aug. 2013 22:47:29
Comentarii

Ai putea seta și un cookie, presupun.

Ben Polinsky Ben Polinsky
5 ian. 2017 21:35:49

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

Shivanand Sharma Shivanand Sharma
16 ian. 2019 08:16:22

@ShivanandSharma poți, dar nu este nevoie să folosești add_query_arg pentru a adăuga doar un singur argument la URL fără alte argumente de interogare.

Krzysiek Dróżdż Krzysiek Dróżdż
16 ian. 2019 08:56:53