Intereting Posts
Добавьте новую страницу подтверждения перед сохранением Удалите «Контент» и «Обсуждение» справа от виджета панели управления архивирование поддоменов Тагирование формы пользовательской формы запроса Как получить первый тег сообщения в виде гиперссылки? Как перенаправить сообщение, если результаты поиска возвращают только одно сообщение получить идентификатор автора, учитывая идентификатор сообщения Как отключить сквозняки? «Архив» для сообщений и страниц Нажатие кнопки боковой панели при переадресации пользователя вместо этого отображает ее Создайте эскиз для изображений с тем же размером, что и миниатюры Как сделать пейджинг в цикле? Классификация тем по папкам в бэкэнд Как заказать тип сообщения с meta_value_num и если meta_value_num не существует, то порядок по дате Как я могу получить области виджетов, работающих в customizer?

Крючок the_post не стреляет для меня

У меня здесь очень простое требование. Я добавил мета-поле ко всем сообщениям, которые позволят использовать URL для перенаправления сообщения (у меня есть причины для этого). Я пытаюсь вызвать это на действие «the_post», но по какой-то причине он, похоже, не срабатывает. Вот что добавил ive

function nb_checkredirect($post) { if(get_post_meta( $post->ID, 'nb_postredirect', true ) != "") { header('Location: '.get_post_meta( $post->ID, 'nb_postredirect', true )); wp_die(); die(); } } add_action( 'the_post', 'nb_checkredirect' ); 

Я проверил, что будет выводиться в журнал ошибок PHP, и, похоже, что-то не так.

Solutions Collecting From Web of "Крючок the_post не стреляет для меня"

Предполагая, что ваша post_meta добавляется должным образом, эта статья является реальной почтой и что значение «nb_postredirect» является хорошим URL-адресом, я бы попытался:

 function nb_checkredirect( $post ) { //don't have to use get_post_meta!* if ( $post->nb_postredirect ) { wp_redirect( $post->nb_postredirect ); exit; } } add_action( 'the_post', 'nb_checkredirect' ); 

Протестировано на моем собственном сайте.

* Узнал это, просто проверяя этот вопрос – очень приятно.

Заголовки перенаправления должны быть отправлены до загрузки страницы. Закрепите шаблон template_redirect

 function my_page_template_redirect() { if( get_post_meta( $post->ID, 'nb_postredirect', true ) != "" ) { wp_redirect( get_post_meta( $post->ID, 'nb_postredirect', true ) ); exit(); } } add_action( 'template_redirect', 'my_page_template_redirect' ); 

Pls также видит:

  1. https://codex.wordpress.org/Plugin_API/Action_Reference/template_redirect
  2. https://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php