Здравствуйте!
Поставил чистый 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.
Подскажите, как правильно можно решить данную проблему?