В стандартной установке WordPress количество постов, отображаемых на страницах архива (например, категорий, меток, авторов или временных архивов), определяется в настройках «Чтение» в административной панели. Однако часто возникает необходимость изменить это число для конкретного архива или сделать его динамическим в зависимости от условий. В этой статье мы подробно рассмотрим, как программно изменить количество постов на странице архива WordPress, а также приведем примеры с использованием плагинов.
Почему стоит менять количество постов на странице архива WordPress
По умолчанию WordPress показывает одинаковое количество записей на всех страницах блога и архивах. Но бывают ситуации, когда нужно настроить это количество индивидуально:
- Для улучшения удобства пользователей — например, показывать больше постов в популярных категориях и меньше там, где контента мало.
- Для оптимизации скорости загрузки — если в некоторых архивах много изображений, стоит снизить количество постов на странице.
- Для SEO — разные настройки пагинации могут влиять на индексирование сайта.
- Для создания уникального дизайна — например, на главной странице блога показывать 10 постов, а на странице категории — 5.
Изменение количества постов на странице архива с помощью фильтра pre_get_posts
Самый гибкий способ изменить число постов для архивов — использовать хук pre_get_posts. Этот фильтр позволяет модифицировать объект запроса WordPress до того, как он выполнится.
Ниже приведён пример функции, которая изменяет количество постов только для страниц категорий:
function wplink_change_posts_per_page_archive($query) {
if (!is_admin() && $query->is_main_query() && $query->is_category()) {
$query->set('posts_per_page', 7); // Указываем нужное количество постов
}
}
add_action('pre_get_posts', 'wplink_change_posts_per_page_archive');Объяснение кода:
!is_admin()— чтобы не влиять на запросы в админке.$query->is_main_query()— чтобы изменить только основной запрос страницы.$query->is_category()— проверяем, что сейчас отображается категория.$query->set('posts_per_page', 7)— устанавливаем количество постов на странице.
Изменение для разных типов архивов
Аналогично можно изменять количество записей и для других типов архивов, например для тегов:
function wplink_change_posts_per_page_tags($query) {
if (!is_admin() && $query->is_main_query() && $query->is_tag()) {
$query->set('posts_per_page', 5);
}
}
add_action('pre_get_posts', 'wplink_change_posts_per_page_tags');Или для страниц автора:
function wplink_change_posts_per_page_author($query) {
if (!is_admin() && $query->is_main_query() && $query->is_author()) {
$query->set('posts_per_page', 3);
}
}
add_action('pre_get_posts', 'wplink_change_posts_per_page_author');Динамическое изменение количества постов в зависимости от категории
Иногда нужно устанавливать разное количество постов для каждой категории. Для этого можно получить объект категории и проверить её слаг (slug) или ID:
function wplink_dynamic_posts_per_page($query) {
if (!is_admin() && $query->is_main_query() && $query->is_category()) {
$category = get_queried_object();
if ($category->slug == 'novosti') {
$query->set('posts_per_page', 10);
} elseif ($category->slug == 'stati') {
$query->set('posts_per_page', 5);
} else {
$query->set('posts_per_page', 7); // Значение по умолчанию
}
}
}
add_action('pre_get_posts', 'wplink_dynamic_posts_per_page');Такой подход позволит гибко настраивать отображение контента под разные категории и задачи.
Использование плагинов для управления количеством постов на архивах
Если не хочется писать код, можно воспользоваться готовыми плагинами. Среди популярных решений выделяются:
- WP Custom Posts Per Page — плагин, позволяющий задавать индивидуальное количество постов для различных архивов через интерфейс.
- Advanced Post Pagination — расширяет возможности пагинации и настройки количества постов.
- Clearfy Pro — универсальный плагин оптимизации, в том числе с возможностями тонкой настройки запросов и пагинации.
Для установки любого из них достаточно зайти в админку WordPress, перейти в раздел «Плагины» → «Добавить новый», ввести название и установить.
Настройка WP Custom Posts Per Page
После активации плагина в настройках появится новый раздел, где можно выбрать типы архивов (категории, теги, авторы) и задать для каждого своё количество постов на странице.
Это удобный инструмент для тех, кто не хочет лезть в код, но хочет быстро управлять выводом контента.
Как проверить изменения и избежать ошибок
После внесения изменений с помощью кода или плагинов обязательно проверьте, что:
- Количество постов меняется именно на тех страницах, для которых вы это задавали.
- Пагинация работает корректно и ведёт на правильные страницы.
- На сайте нет конфликтов с другими плагинами или темой, особенно с теми, которые влияют на запросы к базе.
Для отладки удобно включить режим отладки WordPress (WP_DEBUG) и использовать инструменты разработчика браузера для проверки запросов и ошибок JavaScript.
Заключение
Изменение количества постов на страницах архива — частая задача в разработке WordPress. Используя фильтр pre_get_posts, вы получаете максимальную гибкость и контроль над выводом контента. Для тех, кто предпочитает готовые решения — плагины вроде WP Custom Posts Per Page или Clearfy Pro помогут быстро настроить пагинацию без программирования.
Если хотите подробнее узнать о Clearfy Pro и его возможностях оптимизации WordPress, рекомендую ознакомиться с информацией на wpshop.ru.