Wp_redirect i wysyłanie zmiennych


12

Jak wysłać niektóre zmienne za pomocą wp_redirect () z pliku function.php w folderze motywu?

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

A na stronie głównej złapię zmienną w stanie „jeśli”, aby pokazać potwierdzenie lub nie, w zależności od tego, czy $variable_to_send= „1”, czy nie.

Jak to zrobić w WordPress?

Odpowiedzi:


10

Obawiam się, że nie możesz tego zrobić w ten sposób.

wp_redirectto fantazyjny sposób wysyłania nagłówka, Locationa drugim argumentem tej funkcji jest status żądania, a nie zmienna niestandardowa. (404, 301, 302 itd.).

Możesz wysłać niektóre zmienne jako parametry pobierania. Możesz więc zrobić coś takiego:

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

Następnie możesz użyć tych zmiennych jako $_GET['my_variable']lub zarejestrować je jako niestandardową zmienną get.


1
Przypuszczam, że możesz też ustawić ciasteczko.
Ben Polinsky,

1
Musisz użyć add_query_arg, aby zrobić to w sposób WordPress.
Shivanand Sharma

@ShivanandSharma możesz, ale nie musisz używać add_query_arg, aby dodać tylko jeden argument do adresu URL bez żadnych innych argumentów zapytania.
Krzysiek Dróżdż

10

Późno na imprezę z tym, ale „sposób Wordpressa” użyłby w ten add_query_argsposób:

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

To zainicjuje przekierowanie do http://my.website/?variable_to_send=1. Będziesz mógł przechwycić zmienną na stronie głównej (lub stronie blogu, w zależności od home_url()konfiguracji), uzyskując dostęp $_GET['variable_to_send']do kodu PHP.

Jeśli masz zamiar to zrobić functions.php, upewnij się, że zaczepiłeś się initlub podobnie wcześnie zaczepiłeś, inaczej pojawi się błąd „Nagłówki już wysłane”.

Mam nadzieję, że pomoże to komuś, kto natknie się na ten post.


7
Jeśli przekierowujesz na adres lokalny, powinieneś użyć wp_safe_redirect().
Nathan Johnson
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.