Замечание: Неопределенное свойство: WP_Query :: $ post

Я использую wp для сайта членства. Я использую страницы для входа пользователя в систему, управления сообщениями, редактирования профиля и т. Д.

Когда я применяю структуру permalink по умолчанию, я обнаружил, что режим отладки показывает это уведомление на всех страницах (а не на странице).

Notice: Undefined property: WP_Query::$post in /var/www/example/wp-includes/query.php on line 2986 Notice: Trying to get property of non-object in /var/www/example/wp-includes/query.php on line 3349 

Но когда я использую имя сообщения для структуры permalink, это уведомление исчезло.

Хотя кажется, это не серьезная проблема (не так ли?), Но я должен знать, что вызывает это предупреждение?

благодаря

Наконец, я нашел, что вызывает эту проблему, оказывается, это связано с моим крюком pre_get_post . Потому что я использую is_page для проверки конкретной страницы, что не подходит.

Вот что я сделал

 function check_page($wp_query){ if($wp_query->is_page(array('1','2','3')) ){ //do something here } return $wp_query; } add_action( 'pre_get_posts', 'check_page' ); 

Поэтому мое решение:

  function check_page($wp_query){ $pageidarray = array('1','2','3'); if($wp_query->is_page() && in_array($wp_query->query_vars['page_id'], $pageidarray) ){ //do something here } return $wp_query; } add_action( 'pre_get_posts', 'check_page' ); 

Задача решена.