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
Ви також можете встановити печиво.
Бен Полінський

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або подібне до нього, інакше ви отримаєте помилку "Заголовки вже надіслані".

Сподіваємось, це допоможе тому, хто наткнеться на цю посаду.


7
Якщо ви переспрямовуєтесь на локальну адресу, вам слід скористатися wp_safe_redirect().
Натан Джонсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.