Если на второй, третьей или десятой странице архива 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. Но в случае повторяющихся записей важно помнить: плагин навигации сам по себе не починит неверный запрос.
Если правка затрагивает файлы темы, работайте через дочернюю тему или тестовую копию сайта. Для архивов и пагинации одна небольшая ошибка в шаблоне может сломать не только навигацию, но и весь список записей на сайте.