Wp_redirect und sendende Variablen

11

Wie sende ich einige Variablen mit wp_redirect () aus der Datei function.php in meinem Themenordner?

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

Und auf der Homepage werde ich die Variable im if-else-Zustand abfangen, um eine Bestätigung anzuzeigen oder nicht, je nachdem, ob $variable_to_send= '1' oder nicht.

Wie geht das in WordPress?

Derfder
quelle

Antworten:

10

Ich fürchte, Sie können das nicht so machen.

wp_redirectist eine ausgefallene Methode zum Senden von Headern. LocationDas zweite Argument dieser Funktion ist der Anforderungsstatus und keine benutzerdefinierte Variable. (404, 301, 302 usw.).

Sie können einige Variablen als get-Parameter senden. Sie können also so etwas tun:

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

Dann können Sie diese Variablen als verwenden $_GET['my_variable']oder als benutzerdefinierte get-Variable registrieren.

Krzysiek Dróżdż
quelle
1
Sie könnten auch einen Cookie setzen, nehme ich an.
Ben Polinsky
Sie müssen add_query_arg verwenden, um es auf WordPress-Weise zu tun.
Shivanand Sharma
@ShivanandSharma Sie können, aber es ist nicht erforderlich, add_query_arg zu verwenden, um nur ein Argument zur URL ohne andere Abfrage-Argumente hinzuzufügen.
Krzysiek Dróżdż
9

Spät zur Party mit diesem, aber der "Wordpress-Weg", um es zu tun, würde add_query_argso verwenden:

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

Dadurch wird eine Umleitung zu initiiert http://my.website/?variable_to_send=1. Sie können die Variable dann auf der Homepage (oder der Blog-Seite, je nachdem, wie Sie eingerichtet home_url()sind) erfassen, indem Sie auf $_GET['variable_to_send']Ihren PHP-Code zugreifen .

Wenn Sie dies tun möchten functions.php, stellen Sie sicher, dass initSie sich an einen oder einen ähnlich frühen Haken anschließen. Andernfalls wird der Fehler "Header bereits gesendet" angezeigt.

Hoffentlich hilft dies jemandem, der über diesen Beitrag stolpert.

Brianjohnhanna
quelle
5
Wenn Sie zu einer lokalen Adresse umleiten, sollten Sie verwenden wp_safe_redirect().
Nathan Johnson