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

|

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

Почему нужно ограничивать число публикаций на страницах архива

Изменение количества записей на странице архива позволяет:

При этом изменение общего параметра в настройках затрагивает все архивы без исключения. Чтобы сделать ограничение выборочным, необходимо программное решение.

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

Самый простой и правильный способ — использовать фильтр pre_get_posts. Он позволяет модифицировать основной запрос до того, как WordPress получит данные из базы.

Пример кода для ограничения записей на архиве категории

function wppremium_pre_get_posts_limit_archive( $query ) {
    // Проверяем, что это главный запрос и фронтенд
    if ( ! is_admin() && $query->is_main_query() ) {
        // Ограничиваем количество записей для архива категории с ID 5
        if ( is_category( 5 ) ) {
            $query->set( 'posts_per_page', 3 );
        }
    }
}
add_action( 'pre_get_posts', 'wppremium_pre_get_posts_limit_archive' );

В этом примере для категории с ID 5 будет показываться только 3 записи на странице. Для других категорий и архивов параметр останется стандартным.

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

Если требуется ограничить количество публикаций для нескольких архивов, например, категорий, тегов и кастомных типов записей, можно расширить условие:

function wppremium_pre_get_posts_limit_multi( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {
        if ( is_category( array( 'novosti', 'blog' ) ) ) {
            $query->set( 'posts_per_page', 5 );
        } elseif ( is_tag( 'aktsii' ) ) {
            $query->set( 'posts_per_page', 2 );
        } elseif ( is_post_type_archive( 'product' ) ) {
            $query->set( 'posts_per_page', 10 );
        }
    }
}
add_action( 'pre_get_posts', 'wppremium_pre_get_posts_limit_multi' );

Здесь для категорий «novosti» и «blog» выводится по 5 записей, для тега «aktsii» — 2, а для архива типа записи «product» — 10.

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

Если вы не хотите писать код вручную, можно использовать специализированные плагины. Вот несколько полезных вариантов:

Важные нюансы и рекомендации

При работе с pre_get_posts всегда проверяйте, что изменения применяются только к главному запросу ($query->is_main_query()) и только на фронтенде (! is_admin()), чтобы избежать побочных эффектов в административной части и других запросах.

Также учтите, что если на сайте используется объектный кэш или сторонние плагины кеширования, изменения параметров запроса могут не сразу отобразиться. В таких случаях нужно очистить кэш.

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

Итог: гибкий контроль количества записей на архивах WordPress

Используя фильтр pre_get_posts, можно легко и точно задать разное количество публикаций для любых страниц архива — категорий, тегов, типов записей. Это позволяет улучшить навигацию, снизить нагрузку на сервер и сделать сайт удобнее для посетителей.

Подключайте готовые плагины для более сложных задач или автоматизации. Например, WP Premium Pagination отлично подойдет для управления пагинацией и ограничениями без кода.

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

Как добавить собственные поля в формы регистрации WordPress и сохранить данные
26.03.2026
WooCommerce: установка ограничений на сроки доставки и способы оплаты для конкретных товаров
03.05.2026
Как создать главный вывод текстовой информации в WordPress без плагинов
22.01.2026
Как добавить AJAX в формы WordPress без плагинов
15.12.2025
WooCommerce: автоматическое удаление неактивных корзин и заказов
15.05.2026
×
-15%
на премиум плагин
My Popup

Повысьте конверсию!

Получить скидку »