Wp_redirect et envoi de variables

11

Comment envoyer des variables avec wp_redirect () depuis le fichier function.php de mon dossier de thèmes?

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

Et sur la page d'accueil, je vais attraper la variable dans la condition if-else pour afficher une confirmation ou non, selon que $variable_to_send = '1' ou pas.

Comment faire cela dans WordPress?

    
posée Derfder 05.08.2013 - 21:41

2 réponses

10

J'ai bien peur que vous ne puissiez pas le faire de cette façon.

wp_redirect est un moyen élégant d'envoyer l'en-tête Location et le deuxième argument de cette fonction est le statut de la demande et non une variable personnalisée. (404, 301, 302, etc.).

Vous pouvez envoyer certaines variables en tant que paramètres get. Donc, vous pouvez faire quelque chose comme ça:

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

Ensuite, vous pouvez utiliser ces variables en tant que $_GET['my_variable'] ou l'enregistrer en tant que variable get personnalisée.

    
réponse donnée Krzysiek Dróżdż 05.08.2013 - 21:47
5

En retard pour le parti avec celui-ci, mais la "méthode de Wordpress" pour le faire utiliserait add_query_arg comme si:

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

Ceci initiera une redirection vers http://my.website/?variable_to_send=1 . Vous pourrez alors capturer la variable sur la page d'accueil (ou la page de blog, selon la configuration de votre home_url() ) en accédant à $_GET['variable_to_send'] dans votre code PHP.

Si vous envisagez de le faire dans functions.php , assurez-vous de bien accrocher init ou un point d'ancrage similaire, sinon vous obtiendrez l'erreur "En-têtes déjà envoyés".

J'espère que cela aidera quelqu'un qui tombe par hasard sur ce message.

    
réponse donnée brianjohnhanna 23.03.2017 - 14:48

Lire d'autres questions sur les étiquettes