Intereting Posts
Страница автоматически генерируется с темы? Изображение, вставленное в сообщение, не отображающееся в «Галерее», Создать Shortcode показывает только сообщения с custom_field meta Удалить плагин с плагинами категории продуктов с 1 подкатегорией не с 2 WordPress и Windows Live Writer В таблице Woocommerce отсутствует заголовок – могу ли я добавить его с помощью крючка? Правильно изменить шаблон публикации Помощь при доступе к странице wp-admin и устранении сообщений об ошибках Проблема со страницей результатов поиска Несколько циклов на category.php с разбивкой на страницы в последнем цикле Стиль сначала 3 сообщения по-разному с контейнером, затем остальные сообщения Показывать только будущее событие (расширенные пользовательские поля) Сделать будущие сообщения видимыми для публики, а не только внутри WP_Query Ошибка WordPress в IIS? Проблема при загрузке изображения на IIS 7 Выпадающее меню с несколькими уровнями

Странная проблема с 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 ()"