Wp_redirect e invio di variabili


12

Come inviare alcune variabili con wp_redirect () dal file function.php nella mia cartella dei temi?

if ( $post_id ) {
    $variable_to_send = '1';
    wp_redirect( home_url(), $variable_to_send );
    exit;
}

E sulla homepage prenderò la variabile in condizione if-else per mostrare una conferma o meno a seconda che $variable_to_send= '1' o no.

Come farlo in WordPress?

Risposte:


10

Temo che non puoi farlo in questo modo.

wp_redirectè un modo sofisticato per inviare l'intestazione Locatione il secondo argomento di questa funzione è lo stato della richiesta e non una variabile personalizzata. (404, 301, 302 e così via).

È possibile inviare alcune variabili come ottenere parametri. Quindi puoi fare qualcosa del genere:

if ( $post_id ) {
        $variable_to_send = '1';
        wp_redirect( home_url() .'?my_variable='.$variable_to_send );
        exit;
}

Quindi è possibile utilizzare queste variabili come $_GET['my_variable']o registrarlo come variabile get personalizzata.


1
Potresti anche impostare un cookie, suppongo.
Ben Polinsky,

Devi usare add_query_arg per farlo nel modo WordPress.
Shivanand Sharma,

@ShivanandSharma puoi, ma non è necessario utilizzare add_query_arg per aggiungere solo un arg all'URL senza altri argomenti di query.
Krzysiek Dróżdż

10

In ritardo alla festa con questo, ma il "modo Wordpress" per farlo userebbe add_query_argcosì:

if ( $post_id ) {
    wp_redirect( esc_url( add_query_arg( 'variable_to_send', '1', home_url() ) ) );
    exit;
}

Ciò avvierà un reindirizzamento a http://my.website/?variable_to_send=1. Saresti in grado di catturare la variabile, quindi, sulla homepage (o sulla pagina del blog, a seconda di come home_url()è stata configurata) accedendo $_GET['variable_to_send']al tuo codice PHP.

Se hai intenzione di farlo in functions.php, assicurati di agganciarti inito di un hook allo stesso modo in anticipo, altrimenti otterrai un errore "Headers già inviati".

Spero che questo aiuti qualcuno che si imbatte in questo post.


6
Se stai reindirizzando a un indirizzo locale, dovresti usare wp_safe_redirect().
Nathan Johnson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.