Wp_redirect и передача переменных
Как отправить некоторые переменные с помощью 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?
Опоздал с ответом, но "правильный способ в 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".
Надеюсь, это поможет тем, кто наткнётся на этот пост.

Боюсь, что вы не можете сделать это таким образом.
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-переменную.

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