Как удалить пагинацию в WordPress без плагинов

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

Почему может понадобиться удалить пагинацию

Удаление пагинации может понадобиться по разным причинам:

  • Упрощение интерфейса, когда количество записей небольшое.
  • Особые требования дизайна или UX.
  • Необходимость вывода всех записей сразу, например, для создания каталога.
  • Оптимизация для определённых кастомных шаблонов или страниц.

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

Как работает пагинация в WordPress

По умолчанию WordPress использует параметр paged в URL для определения текущей страницы пагинации, а в запросе WP_Query передаёт параметр posts_per_page для ограничения количества записей на страницу.

Чтобы убрать пагинацию, нужно изменить запрос так, чтобы он возвращал все записи сразу, то есть установить posts_per_page в число, равное общему количеству записей.

Удаление пагинации на главной странице и архивах с помощью pre_get_posts

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

Ниже пример функции, которая отключает пагинацию на главной странице и в архивах, выводя все записи сразу:

function wpdo_remove_pagination(\WP_Query $query) {
    if ( !is_admin() && $query->is_main_query() ) {
        if ( is_home() || is_archive() ) {
            // Получаем общее количество опубликованных записей
            $total_posts = wpdo_get_total_posts_count();
            $query->set('posts_per_page', $total_posts);
            $query->set('paged', 1); // Убираем пагинацию
        }
    }
}
add_action('pre_get_posts', 'wpdo_remove_pagination');

function wpdo_get_total_posts_count() {
    $count_posts = wp_count_posts();
    return $count_posts->publish;
}

В этом коде функция wpdo_remove_pagination проверяет, что это основной запрос и не админка, после чего меняет параметр posts_per_page на общее количество опубликованных записей, effectively отключая пагинацию.

Особенности и возможные проблемы

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

Удаление пагинации на кастомных WP_Query

Если на сайте используются кастомные запросы через WP_Query, то для удаления пагинации нужно изменить параметры запроса при его создании.

Пример создания кастомного запроса без пагинации:

$args = array(
    'post_type' => 'post',
    'posts_per_page' => -1, // Вывод всех записей
    'paged' => 1,
);
$wpdo_query = new WP_Query($args);

if ($wpdo_query->have_posts()) {
    while ($wpdo_query->have_posts()) {
        $wpdo_query->the_post();
        // Вывод записи
        the_title('<h2>', '</h2>');
        the_excerpt();
    }
    wp_reset_postdata();
}

Передача 'posts_per_page' => -1 означает, что будут выведены все записи без разбивки на страницы.

Советы по использованию

  • Не используйте posts_per_page => -1 на страницах с большим количеством записей.
  • Оптимизируйте вывод, чтобы не перегружать страницу.
  • В кастомных шаблонах контролируйте пагинацию по необходимости.

Удаление пагинации из шаблонов — что нужно учесть

Даже если вы отключили пагинацию через параметры запроса, в шаблонах WordPress (например, index.php, archive.php) может оставаться вызов функций вывода пагинации, таких как the_posts_pagination() или paginate_links().

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

if ( false ) {
    the_posts_pagination(array(
        'mid_size' => 2,
        'prev_text' => __('« Назад'),
        'next_text' => __('Вперед »'),
    ));
}

Или динамически проверять, нужна ли пагинация на странице.

Использование плагина Clearfy Pro для гибкого управления пагинацией

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

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

Выводы и рекомендации

Удаление пагинации без плагинов в WordPress сводится к изменению параметров запроса и корректировке шаблонов. Используйте хук pre_get_posts для изменения основного запроса, а для кастомных запросов задавайте posts_per_page => -1. Обязательно убирайте вызовы вывода пагинации из шаблонов, чтобы не было пустых элементов.

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

WooCommerce: как убрать обязательное поле адреса доставки при оформлении заказа
23.06.2026
WooCommerce: Как изменить страницу «Спасибо» после оформления заказа
16.06.2026
Оптимальные методы защиты WordPress от взломов
15.11.2025
WooCommerce: отладка проблем с оплатой через Яндекс.Кассу
13.05.2026
Как добавить двухфакторную авторизацию в WordPress для повышения безопасности
25.01.2026