Wp_redirect и отправка переменных


12

Как отправить некоторые переменные с помощью wp_redirect () из файла function.php в моей папке темы?

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

И на домашней странице я поймаю переменную в условии if-else, чтобы показать какое-то подтверждение или нет в зависимости от того, $variable_to_send'= 1' или нет.

Как это сделать в WordPress?

Ответы:


10

Я боюсь, что вы не можете сделать это таким образом.

wp_redirectэто необычный способ отправки заголовка, Locationи вторым аргументом этой функции является статус запроса, а не пользовательская переменная. (404, 301, 302 и т. Д.).

Вы можете отправить некоторые переменные в качестве параметров получения. Так что вы можете сделать что-то вроде этого:

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

Затем вы можете использовать эти переменные как $_GET['my_variable']или зарегистрировать их как пользовательскую переменную get.


1
Вы также можете установить печенье, я полагаю.
Бен Полинский

Вам нужно использовать add_query_arg, чтобы сделать это способом WordPress.
Шивананд Шарма

@ShivanandSharma вы можете, но нет необходимости использовать add_query_arg, чтобы добавить только один аргумент в URL без каких-либо других аргументов запроса.
Krzysiek Dróżdż

10

Опоздал на вечеринку с этим, но «Wordpress способ» сделать это будет add_query_argтак:

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

Это инициирует перенаправление на http://my.website/?variable_to_send=1. Затем вы сможете перехватить переменную на домашней странице (или странице блога, в зависимости от того, как вы home_url()ее настроите), открыв $_GET['variable_to_send']свой PHP-код.

Если вы собираетесь это functions.phpсделать, убедитесь, что вы зацепили initили аналогично раннюю зацепку, иначе вы получите ошибку «Заголовки уже отправлены».

Надеюсь, это поможет кому-то, кто наткнется на этот пост.


6
Если вы перенаправляете на локальный адрес, вы должны использовать wp_safe_redirect().
Натан Джонсон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.