wp_safe_redirect (); не перенаправляет, просто печатает заданную переменную? - PullRequest
0 голосов
/ 21 января 2020

Я думаю, что я либо неверно истолковываю определение Кодекса *1001* функции wp_safe_redirect() WP Codex, либо я извращенец и неправильно его использую. (Я даже не знал, что в WP есть такая функция, но эй, каждый день учится, верно?)

Итак, в каком-то сценарии у меня есть новый экземпляр WP_Query, который перебирает определенную запись c Затем type извлекает один результат на основе поля ACF meta_key. Я просто хочу перенаправить пользователя на первый и единственный найденный результат.

Вот моя попытка;

$args = array(
    'post_type'              => array( 'locale' ),
    'post_status'            => array( 'published' ),
    'nopaging'               => true,
    'posts_per_page'         => '1',
    'meta_key'               => 'postal_town',
    'meta_value'             => $postal_town_result
);

$postcodeSearch = new WP_Query( $args );

if($postcodeSearch->have_posts()) : 
    while($postcodeSearch->have_posts()) : $postcodeSearch->the_post();

        $perma_url = the_permalink();
        wp_safe_redirect( $perma_url ); // just prints the url?
        exit; 

    endwhile; 
else:
    echo 'Oops, there are no posts.'
endif;

Любой совет будет принят с благодарностью.

1 Ответ

1 голос
/ 21 января 2020

Из WordPress the_permalink :

the_permalink Отображает постоянную ссылку для текущего сообщения.

Так что на самом деле отображает его, и после вывод перенаправления заголовка завершается неудачно, поскольку заголовки уже отправлены.

Требуется get_permalink , который возвращает постоянную ссылку вместо ее отображения:

    $perma_url = get_permalink();
    wp_safe_redirect( $perma_url );
    exit;

Кроме того, со следующим или любой другой эквивалентный параметр WordPress покажет вам:

error_reporting(E_ALL);
ini_set('display_errors', '1');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...