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

В процессе разработки сайтов на WordPress нередко возникает задача ограничить число выводимых записей в архивных страницах, категориях, тегах или произвольных типах записей. По умолчанию WordPress выводит количество постов, заданное в настройках «Число записей на странице», но иногда необходимо задать индивидуальное ограничение для конкретного архива.

Почему стоит ограничивать число постов в архиве

Ограничение количества постов в архиве позволяет улучшить производительность сайта, особенно если в базе много записей. Кроме того, это удобно для организации интерфейса — например, когда необходимо выводить только последние 5 или 10 записей в определенной категории. Такой подход облегчает восприятие информации пользователями и снижает нагрузку на сервер.

Типичные случаи применения ограничения постов

  • Отдельные категории с лимитом записей;
  • Произвольные типы записей с кастомным числом элементов;
  • Архивы тегов с ограничением для улучшения навигации;
  • Страницы автора с индивидуальным числом публикаций.

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

Для настройки ограничения чаще всего используют фильтр pre_get_posts. Давайте рассмотрим, как создать функцию, которая будет менять параметр posts_per_page для определенного архива. Назовем функцию wp8_limit_posts_in_archive.

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

    // Ограничим для категории с ID 7
    if ($query->is_category(7)) {
        $query->set('posts_per_page', 5);
    }

    // Ограничим для архива произвольного типа записи 'portfolio'
    if ($query->is_post_type_archive('portfolio')) {
        $query->set('posts_per_page', 8);
    }

    // Ограничение для архива тегов с слагом 'news'
    if ($query->is_tag('news')) {
        $query->set('posts_per_page', 10);
    }
}
add_action('pre_get_posts', 'wp8_limit_posts_in_archive');

В этом примере мы проверяем, что запрос не из административной панели и что это главный запрос на странице. Затем устанавливаем индивидуальное количество постов для различных архивов.

Дополнительные советы по работе с ограничением постов

Пагинация и корректное количество постов

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

Ограничение постов на странице произвольного типа записи

Для произвольных типов записей важно учитывать, что у них могут быть свои настройки архива. Чтобы ограничение применялось корректно, используйте проверку is_post_type_archive с точным указанием типа.

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

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

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

Иногда полезно позволить пользователю самому задавать количество выводимых постов через GET-параметр. Это можно реализовать так:

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

    if ($query->is_archive()) {
        $posts_per_page = isset($_GET['ppp']) ? intval($_GET['ppp']) : false;
        if ($posts_per_page && $posts_per_page > 0 && $posts_per_page <= 50) {
            $query->set('posts_per_page', $posts_per_page);
        }
    }
}
add_action('pre_get_posts', 'wp8_limit_posts_by_user_request');

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

Оптимизация запросов при ограничении постов

Уменьшая количество постов на страницу, вы снижаете нагрузку на базу данных. Однако если сайт использует сложные метаполя или таксономии, стоит дополнительно оптимизировать запросы. Для этого можно применять кеширование запросов и отключать ненужные JOIN через фильтр posts_clauses.

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

Итог

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

WooCommerce: как отключить автологин после регистрации пользователя
29.04.2026
Как удалить кеш и оптимизировать WordPress без плагинов
09.02.2026
Как убрать время из ссылок WordPress
24.03.2026
WooCommerce: как отключить автологин после регистрации пользователя
03.06.2026
Как добавить автоматическое удаление старых постов в WordPress через WP-Cron
15.04.2026