Wp_redirect и передача переменных

5 авг. 2013 г., 22:41:27
Просмотры: 42.7K
Голосов: 15

Как отправить некоторые переменные с помощью 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?

0
Все ответы на вопрос 2
1
16

Опоздал с ответом, но "правильный способ в 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 или другой ранний хук, иначе получите ошибку "Headers already sent".

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

23 мар. 2017 г. 15:48:30
Комментарии

Если вы перенаправляете на локальный адрес, следует использовать wp_safe_redirect().

Nathan Johnson Nathan Johnson
23 мар. 2017 г. 17:17:59
3
14

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

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

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

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

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

5 авг. 2013 г. 22:47:29
Комментарии

Вы также можете установить cookie, я полагаю.

Ben Polinsky Ben Polinsky
5 янв. 2017 г. 21:35:49

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

Shivanand Sharma Shivanand Sharma
16 янв. 2019 г. 08:16:22

@ShivanandSharma вы можете, но нет необходимости использовать add_query_arg для добавления всего одного аргумента в URL без каких-либо других query args.

Krzysiek Dróżdż Krzysiek Dróżdż
16 янв. 2019 г. 08:56:53