Intereting Posts
Могу ли я использовать собственный идентификатор приложения Facebook с этим плагином для социальных комментариев? Как преобразовать DateTime () для отображения времени, основанного на настройке часового пояса WordPress? Авторы могут настраивать свои авторские страницы? Admin ajax добавить обратный вызов тега Зацикливание всех сообщений за определенный год Как создать плагин WordPress с собственной страницей? заголовки и описания в WordPress с помощью Yoast SEO / All In One Плагин для пакета SEO как получить настраиваемый элемент подменю admin (пользовательский тип сообщения), чтобы выделить, когда его активный Проблема публикации комментариев в WordPress включая объекты изображения в виджетах Восстановление таблицы wp_usermeta от пользователей Как опубликовать adobe edge animation для пользовательского плагина wordpress Избыток белого пространства над панелью администратора на Frontend с помощью Twitter Bootstrap Показать сообщение по заказу меню Показывать количество проданных товаров, но сначала не менее 2

Странная проблема с pre_get_posts и $ query-> is_page ()

Следующий бит кода использовался в моем фиктивном плагине для перенаправления не зарегистрированных пользователей со страницы 173 (ID) на sample-page (slug). Код работает хорошо. Но только сегодня я понял, что код вызывает Уведомления в Firefox.

Проблема возникла, когда я попытался установить статическую страницу в качестве первой страницы в меню «Настройки»> «Чтение».

Примечание. Попытка получить свойство не-объекта в /wp-includes/class-wp-query.php в строке 3760

Примечание. Пытается получить свойство не-объекта в /wp-includes/class-wp-query.php в строке 3762

Примечание. Попытка получить свойство не-объекта в /wp-includes/class-wp-query.php в строке 3764

При нескольких проверках я понял, что причиной этого является следующий бит кода. И, что конкретно, проблема is_page(173) с is_page(173) .

 add_action('pre_get_posts', function($query) { if( $query->is_main_query() && ! is_admin() && ! is_user_logged_in() && $query->is_page(173) ) { wp_redirect(home_url('/sample-page')); exit(); } }); 

Я попытался перейти от $query->is_page(173) к is_page(173) – результат такой же.

Чтобы протестировать пустую установку, я попытался отключить все плагины и установить тему TwentySixteen по умолчанию и переустановить WordPress, чтобы получить новую установку. Я ввел следующий код в functions.php TwentySixteen, и с DEBUG, вот что я получил . (Уведомление находится под черной областью заголовка, просто нажмите Ctrl + A, чтобы увидеть их). Вы можете проверить перенаправление с этой страницы ( 173 ) на эту страницу без уведомления.

В чем проблема с моим кодом?

Solutions Collecting From Web of "Странная проблема с pre_get_posts и $ query-> is_page ()"