Как установить ограничения на число постов в рубриках WordPress

В стандартной работе WordPress количество постов на странице архивов (включая рубрики) определяется параметром «Количество записей на странице» в настройках чтения. Однако иногда возникает задача вывести ограниченное количество постов только для конкретной рубрики, оставив для остальных архивов стандартное значение. В этой статье разберём, как реализовать такую функциональность с помощью кода и плагинов.

Почему стандартные настройки WordPress не подходят для ограничения постов в отдельных рубриках

По умолчанию настройка «Количество записей на странице» глобальна и действует на все архивы сайта одинаково. Это неудобно, если вам нужно, чтобы, например, в рубрике «Новости» выводилось 5 последних постов, а в рубрике «Блог» — 10 или 20. В стандартном интерфейсе WordPress нет возможности задать индивидуальные лимиты на количество записей для разных категорий.

Для такой задачи необходимо вмешаться в запрос WordPress — WP_Query — и изменить параметр posts_per_page для нужных страниц рубрик. Сделать это можно через фильтр pre_get_posts.

Как с помощью фильтра pre_get_posts ограничить число постов в определённой рубрике

Фильтр pre_get_posts позволяет модифицировать основной запрос WordPress перед его выполнением. Мы можем проверить, что запрос относится к определённой рубрике, и поменять параметр posts_per_page.

Пример кода для файла functions.php вашей темы или подключаемого плагина:

function wpfix_limit_posts_per_category( $query ) {
    // Проверяем, что это главный запрос и не админка
    if ( !is_admin() && $query->is_main_query() ) {
        // Проверяем, что это архив рубрики с ярлыком 'novosti'
        if ( $query->is_category('novosti') ) {
            $query->set('posts_per_page', 5);
        }
        // Можно добавить другие категории с разными лимитами
        if ( $query->is_category('blog') ) {
            $query->set('posts_per_page', 10);
        }
    }
}
add_action( 'pre_get_posts', 'wpfix_limit_posts_per_category' );

В этом примере для рубрики с ярлыком novosti будет выведено максимум 5 постов, а для blog — 10. Для остальных рубрик будет использоваться стандартное значение из настроек WordPress.

Особенности и рекомендации

  • Ярлыки категорий (slug) указывайте точно, как они созданы в админке WordPress.
  • Функция is_category() может принимать массив ярлыков, если нужно объединить несколько рубрик под одно ограничение.
  • Обязательно проверяйте is_main_query(), чтобы не влиять на дополнительные запросы в шаблонах.

Использование плагинов для управления количеством постов в рубриках

Если не хочется писать код, можно использовать плагины, которые расширяют возможности настройки вывода контента. Например, плагин Category Specific Posts Per Page позволяет задавать индивидуальные лимиты для каждой рубрики через интерфейс.

Однако у таких плагинов бывают ограничения по совместимости или они могут не учитывать все нюансы работы темы и других плагинов, поэтому в критичных проектах лучше использовать кастомные решения через pre_get_posts.

Как проверить работу ограничения и отладить вывод

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

function wpfix_limit_posts_per_category_debug( $query ) {
    if ( !is_admin() && $query->is_main_query() && $query->is_category() ) {
        error_log('Category: ' . single_cat_title('', false) . ' posts_per_page before: ' . $query->get('posts_per_page'));
        // Ваши изменения
    }
}
add_action('pre_get_posts', 'wpfix_limit_posts_per_category_debug', 0);

Логи можно смотреть в файле debug.log при включённом режиме отладки WordPress (WP_DEBUG_LOG).

Дополнительные возможности: пагинация и SEO

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

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

Пример расширения: ограничение вывода постов в виджетах и кастомных запросах

Если вы используете виджеты, которые выводят записи из рубрик, и хотите применить аналогичные ограничения, то для кастомных WP_Query нужно вручную указывать параметр posts_per_page. Например:

$args = [
    'category_name' => 'novosti',
    'posts_per_page' => 5
];
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        // вывод контента
    }
    wp_reset_postdata();
}

Автоматически фильтр pre_get_posts не повлияет на кастомные запросы, если они не являются главным запросом.

Заключение по теме ограничения постов в рубриках

Установка индивидуальных ограничений на количество постов в рубриках — частая задача для оптимизации вывода контента. Самый надёжный и гибкий способ — использовать фильтр pre_get_posts с проверкой условий. Для простых случаев подойдёт плагин Category Specific Posts Per Page. Помните о тестировании и отладке, чтобы не нарушить логику работы сайта.

Как использовать REST API в WordPress для автоматизации задач
30.11.2025
Как использовать хуки WordPress для отложенного выполнения кода
16.01.2026
Оптимизация базы данных WordPress: как ускорить сайт и снизить нагрузку
15.11.2025
Как использовать WPCommunity для создания внутреннего портала на WordPress
07.02.2026
Как установить ограничение на размер и тип файлов при загрузке в WordPress
13.01.2026