Как исправить, что пагинация показывает одни и те же записи в WordPress

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

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

Сначала проверьте, где именно ломается логика

Повторяющиеся записи на страницах архива могут появляться в разных сценариях, и от этого зависит решение.

  • Обычный архив категории, рубрики, тега или даты. WordPress сам умеет разбивать такой список на страницы, если тема использует стандартный Loop.
  • Кастомный шаблон с собственным запросом. Часто проблема возникает, когда разработчик создал отдельный WP_Query, но не передал в него номер текущей страницы.
  • Страница с блоком записей, шорткодом или виджетом. Здесь пагинация может быть визуально похожа на архивную, но на самом деле это отдельный вывод, который не связан с основным запросом.
  • Плагин фильтрации или конструктор. Некоторые решения подменяют запрос, а часть из них не учитывает пагинацию корректно.

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

Проверьте, не сбрасывается ли номер страницы в шаблоне

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

Типичная ошибка выглядит так: разработчик создаёт new WP_Query(), выводит записи и подключает пагинацию, но забывает про параметр paged. Для архива это критично.

В корректном варианте номер страницы обычно берут из глобального запроса и передают в аргументы:

$paged = max( 1, get_query_var( 'paged' ) );

Дальше этот параметр используют в запросе:

$query = new WP_Query( array( 'post_type' => 'post', 'posts_per_page' => 10, 'paged' => $paged ) );

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

Ещё одна частая ошибка — после кастомного цикла не вызывают wp_reset_postdata(). Это не всегда ломает пагинацию напрямую, но может приводить к странному поведению шаблона, особенно если в нём несколько циклов подряд.

Если используется основной архив WordPress, ищите вмешательство в запрос

Когда архив сделан стандартно, без собственного WP_Query, повторяющиеся записи обычно появляются из-за фильтров или параметров, которые меняют основной запрос. Проверять нужно прежде всего такие вещи:

  • pre_get_posts в functions.php дочерней темы или в плагине;
  • плагины для фильтрации, сортировки и поиска;
  • настройки темы, которые ограничивают список записей;
  • нестандартные параметры в URL, которые подменяют сортировку или выборку.

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

Проверка простая: временно отключите плагины, которые влияют на выборку, и переключитесь на стандартную тему, например Twenty Twenty-Four. Если пагинация начинает работать нормально, источник проблемы найден. Если нет — значит, ошибка в текущей теме или в кастомном коде.

Проверьте, как подключена пагинация в теме

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

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

Обратите внимание на такие признаки:

  • в шаблоне есть два цикла, и один из них выводит записи, а второй — пагинацию;
  • пагинация строится по фиксированному числу страниц, а не по реальному количеству записей;
  • в HTML есть ссылки на страницы, но при переходе контент не меняется;
  • в URL страницы меняется номер, но запрос остаётся тем же.

Если вы используете плагин вроде WP-PageNavi, он тоже не решает проблему сам по себе. Он только заменяет стандартные ссылки на более удобную навигацию. Но если запрос не учитывает номер страницы, то и WP-PageNavi покажет ссылки на страницы с тем же самым набором записей.

Что делать, если проблема в собственном WP_Query

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

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

$paged = max( 1, get_query_var( 'paged' ) );

$query = new WP_Query( array(
    'post_type'      => 'post',
    'posts_per_page' => 10,
    'paged'          => $paged,
) );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        the_title( '<h2>', '</h2>' );
    }

    echo paginate_links( array(
        'total'   => $query->max_num_pages,
        'current' => $paged,
    ) );
}

wp_reset_postdata();

Здесь важно не только наличие 'paged' => $paged, но и то, что навигация строится по $query->max_num_pages. Если подставить фиксированное число страниц, ссылки будут вести не туда или дублировать один и тот же контент.

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

Когда виноваты параметры URL и настройки ЧПУ

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

Проверьте следующее:

  • страницы архива открываются по корректному адресу, а не через дублирующий путь;
  • в Настройки → Постоянные ссылки сохранена текущая структура, особенно если недавно меняли ЧПУ;
  • нет конфликта между страницей и рубрикой с одинаковым слагом;
  • плагин кэширования не отдаёт старую версию архива на всех страницах.

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

Как быстро проверить, что исправление сработало

После правки не ограничивайтесь визуальной проверкой первой и второй страницы. Посмотрите на несколько признаков одновременно:

  • на второй странице архива меняется набор записей;
  • в адресной строке меняется номер страницы;
  • заголовок и мета-данные страницы, если они есть, соответствуют текущему архиву;
  • при возврате на первую страницу список снова становится исходным;
  • в исходном коде или через инструменты разработчика нет одинакового списка карточек на всех страницах.

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

Что выбрать: штатную пагинацию, WP-PageNavi или правку шаблона

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

СитуацияЧто делать
Обычный архив работает, но вид навигации не устраиваетИспользовать штатную пагинацию или WP-PageNavi
На всех страницах архива повторяются одни и те же записиПроверить paged, шаблон и запрос
Пагинация есть, но меняется только URLИсправить логику выборки записей в теме или плагине
Проблема только в одном архиве или блокеИскать ошибку в конкретном шаблоне или кастомном запросе

Если вы не хотите разбираться в коде темы, но понимаете, что проблема связана именно с шаблоном или выводом архива, иногда проще сначала проверить, нет ли готового решения в каталоге плагинов WPShop: https://wpshop.ru/plugins. Но в случае повторяющихся записей важно помнить: плагин навигации сам по себе не починит неверный запрос.

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

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

⭐⭐⭐⭐⭐
Как сделать пагинацию для категорий в WordPress: практические советы и примеры
26.09.2026
Как сделать пагинацию в архиве тегов WordPress
26.10.2026
Как убрать стандартную пагинацию WordPress и заменить её на кнопку «Показать ещё»
10.10.2026
Как исправить, что пагинация показывает одни и те же записи в WordPress
01.11.2026
Как добавить стрелки, номера и «Предыдущая/Следующая» в пагинацию WordPress
20.10.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее