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

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

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

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

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

Кроме того, вручную отключив пагинацию, вы сможете избежать проблем с SEO, которые могут возникнуть из-за неправильной маршрутизации страниц.

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

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

При загрузке страницы WordPress формирует запрос, учитывающий эти параметры, и выводит записи в цикле. Стандартные функции для вывода пагинации — paginate_links(), previous_posts_link() и next_posts_link().

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

Метод 1: Установка параметра posts_per_page в -1

Самый простой способ — изменить основной запрос, указав posts_per_page равным -1. Это заставит WordPress вывести все записи сразу без разделения на страницы.

Если вы хотите применить это на главной странице или архиве, используйте фильтр pre_get_posts. Пример кода для файла functions.php вашей темы:

function wpmax_remove_pagination_pre_get_posts($query) {
    if (!is_admin() && $query->is_main_query() && (is_home() || is_archive())) {
        $query->set('posts_per_page', -1);
    }
}
add_action('pre_get_posts', 'wpmax_remove_pagination_pre_get_posts');

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

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

Метод 2: Удаление элементов навигации в шаблонах темы

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

  • the_posts_pagination()
  • paginate_links()
  • previous_posts_link() и next_posts_link()

Удалите или закомментируйте эти вызовы. Например, в файле index.php или archive.php:

<?php
// the_posts_pagination(); // Удаляем пагинацию
?>

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

Как проверить наличие пагинации в шаблонах

Для поиска пагинации быстро просмотрите файлы темы с помощью IDE или командной строки, например:

grep -rnw 'wp-content/themes/your-theme' -e 'paginate_links'

Замените your-theme на название вашей темы. Аналогично проверьте другие функции пагинации.

Метод 3: Использование пользовательского WP_Query для вывода всех записей без пагинации

Если вы хотите вывести записи в кастомном шаблоне или на странице, можно создать собственный запрос с параметром posts_per_page равным -1 и без параметра paged:

$args = array(
    'post_type' => 'post',
    'posts_per_page' => -1,
    'orderby' => 'date',
    'order' => 'DESC'
);
$wpmax_query = new WP_Query($args);

if ($wpmax_query->have_posts()) {
    while ($wpmax_query->have_posts()) {
        $wpmax_query->the_post();
        // Выводим контент записи
        the_title('<h2>', '</h2>');
        the_excerpt();
    }
    wp_reset_postdata();
} else {
    echo '<p>Записей не найдено.</p>';
}

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

Рекомендации по оптимизации и SEO

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

  • Оценить количество записей и, если их более 100, подумать об альтернативных способах вывода.
  • Использовать кэширование страниц, чтобы снизить нагрузку на сервер.
  • При необходимости разбивать записи по категориям или тегам, чтобы уменьшить объём одного запроса.
  • Для SEO лучше использовать canonical-ссылки и избегать дублирующегося контента.

Код для добавления canonical-ссылки в header.php:

<?php
if (is_home() || is_archive()) {
    echo '<link rel="canonical" href="' . esc_url(home_url('/')) . '" />';
}
?>

Выводы и практические советы

Удаление пагинации в WordPress без плагинов — задача вполне решаемая с помощью корректной настройки запроса и правок шаблонов. Такой подход даёт полный контроль над выводом данных и помогает избежать лишних нагрузок и конфликтов.

Обязательно тестируйте изменения на локальной копии сайта или staging-сервере, особенно если у вас большой объём записей. Следите за производительностью и оперативно оптимизируйте запросы.

Используйте приведённые примеры кода как основу для своих кастомных решений и адаптируйте их под особенности вашего проекта на wpmax.ru.

WooCommerce: как отключить автоматическое обновление статуса заказов
13.06.2026
Как создать собственный виджет WordPress
26.11.2025
Как добавить уникальные поля в WooCommerce без плагинов
23.12.2025
Как изменить размер изображений в WooCommerce без поддержки темы
07.03.2026
Как разделить контент на страницах WordPress по условиям
02.02.2026