@Thes

Как исправить ошибку произвольной pre_get_posts при 404 ошибке?

Здравствуйте!
Поставил чистый WP, создал рубрику "books" и написал функцию, которая выводит в этой категории необходимое количество записей:
add_action( 'pre_get_posts', 'books_posts_per_page' );
function books_posts_per_page( $query ) {
	if ( ! is_admin() && $query->is_main_query() && $query->is_category( 'books' ) ) {
		$query->set( 'posts_per_page', '1' );
	}
}

сама функция рабочая, ошибок в процессе не выдавала.
Начал тестить 404 ошибки(просто написал не существующий адрес типа: site.ru/qwerty123) и тут стали появляться ошибки:
PHP Notice:  Trying to get property 'term_id' of non-object in \wp-includes\class-wp-query.php on line 3718
PHP Notice:  Trying to get property 'name' of non-object in \wp-includes\class-wp-query.php on line 3720
PHP Notice:  Trying to get property 'slug' of non-object in \wp-includes\class-wp-query.php on line 3722

Благодаря query-monitor выяснилось, что виноват вот этот кусок кода: "$query->is_category( 'books' )".
Причем даже если использовать стандартные методы:
if ( $query->is_main_query() && is_tag() ) {
$query->set( 'posts_per_page', '1' );
}

то ошибок не возникает, а только при работе с "$query->is_category()".
Перепробовал разные методы: isset, empty, но не помогло, единственное, что нашел, это советовали обрабатывать через get_queried_object.

Подскажите, как правильно можно решить данную проблему?
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы