Как отключить автоматическое проставление пагинации в WordPress

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

Что такое автоматическая пагинация в WordPress и почему её отключают

Автоматическая пагинация — это способ разбить длинный список записей на несколько страниц, чтобы улучшить удобство просмотра и снизить нагрузку на сервер. WordPress по умолчанию использует параметры posts_per_page и paged в запросах для вывода страниц с постами.

Однако бывают ситуации, когда:

  • Необходимо вывести все записи сразу, например, для создания единого архива или каталога.
  • Механизм пагинации конфликтует с кастомными скриптами или плагинами.
  • Желаете реализовать собственную пагинацию с другой логикой.

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

Как отключить пагинацию через изменение WP_Query

Самый простой способ — изменить параметры запроса WordPress, чтобы вернуть все записи за один запрос и не использовать разбивку на страницы. Для этого можно использовать хук pre_get_posts. Пример кода для functions.php вашей темы или плагина:

function journalx_disable_pagination( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {
        // Убираем пагинацию на главной странице и архиве
        $query->set( 'posts_per_page', -1 ); // Вывести все записи
        $query->set( 'paged', 1 );          // Отключаем постраничность
    }
}
add_action( 'pre_get_posts', 'journalx_disable_pagination' );

В этом коде все записи будут выводиться на главной или архивных страницах без разбивки на страницы. Параметр posts_per_page = -1 заставляет WP вернуть все записи.

Важные нюансы отключения пагинации через WP_Query

При таком подходе стоит учитывать:

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

Отключение пагинации в шаблонах темы

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

Пример удаления пагинации в шаблоне:

<?php
// Удаляем следующий блок
// the_posts_pagination();
?>

Однако такой метод не отключает пагинацию на уровне запроса, а просто не выводит навигационные ссылки.

Плагины для управления пагинацией в WordPress

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

  • Clearfy Pro — плагин оптимизации, в том числе умеет отключать ненужные элементы темы и может помочь с пагинацией. Подробнее на wpshop.ru.
  • WPCommunity Pagination — расширенные возможности по кастомизации пагинации.
  • ABC Pagination — позволяет создать кастомную пагинацию с уникальным дизайном и логикой.

Использование плагинов удобно, если вы не хотите править код и хотите получить удобный интерфейс.

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

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

function journalx_custom_pagination() {
    $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
    $args = array(
        'posts_per_page' => 5, // Количество записей на странице
        'paged' => $paged
    );

    $custom_query = new WP_Query( $args );

    if ( $custom_query->have_posts() ) {
        while ( $custom_query->have_posts() ) {
            $custom_query->the_post();
            echo '<h2>' . get_the_title() . '</h2>';
            the_excerpt();
        }

        // Навигация
        $big = 999999999; // уникальное число для замены
        echo paginate_links( array(
            'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
            'format' => '?paged=%#%',
            'current' => max( 1, $paged ),
            'total' => $custom_query->max_num_pages
        ) );
    }
    wp_reset_postdata();
}

Вызовите функцию journalx_custom_pagination() в нужном месте шаблона, чтобы вывести посты с собственной пагинацией.

Резюме и рекомендации

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

При большом объёме записей будьте осторожны с выводом всех записей сразу — это может замедлить сайт. Для оптимизации подойдут плагины, например, Clearfy Pro, которые помогут не только с пагинацией, но и с общей производительностью.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как создать автоматический журнал изменений в WordPress с подробными примерами
13.01.2026
Как автоматически отмечать старые посты в WordPress
03.04.2026
Как автоматически отключить комментарии в WordPress на старых постах
30.03.2026
Как добавить отслеживание изменений в статьях WordPress с примерами кода и плагинов
12.02.2026
Как создать подписи к постам в WordPress: практическое руководство с примерами кода
02.12.2025
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙