@vadim_sverdlik
Начинающий разраб

Некорректно отрабатывает pre get posts. Как решить?

У меня в в functiions.php такой код,но на страницах категорий выводится 5 постов а не 2, 5 указано в админке. Если закоментировать
if ( is_admin() || ! $query->is_main_query() ) {
        return;
    }


то тогда на старнице категорий выводится по 2 записи как и нужно,но тогда на главнй странице выводит не то количество. Подскажите в чем может быть проблема

function custom_posts_per_page( $query ) {

    if ( is_admin() || ! $query->is_main_query() ) {
        return;
    }


    if ( $query->is_search() ) {
        $query->set( 'posts_per_page', 8 );
    }

    if ( $query->is_category() ) {
        if ( wp_is_mobile() ) {
            $query->set( 'posts_per_page', 2 );
        } else {
            $query->set( 'posts_per_page', 2 );
        }

    }//endif

}//function

add_action( 'pre_get_posts', 'custom_posts_per_page' );
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
Наводящий вопрос, тему сами делали?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@loonny
Так сделайте это
Если закоментировать
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
то тогда на старнице категорий выводится по 2 записи как и нужно


Создайте дополнительное условие для главной страницы
if ( $query->is_home() ) {
  $query->set( 'posts_per_page', 5 );
}

но тогда на главной странице выводит не то количество


Условие тут избыточно
if ( wp_is_mobile() ) {
  $query->set( 'posts_per_page', 2 );
} else {
  $query->set( 'posts_per_page', 2 );
}

и его можно заменить на
$query->set( 'posts_per_page', 2 );

Откройте раздел "редактирование шаблонов" или что-то подобное, Там можно сразу перемещаться на страницы документации по названиям функций.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы