Если в архиве WordPress у вас есть только сухие ссылки на страницы или, наоборот, слишком перегруженная навигация, это обычно решается не «магией» плагина, а выбором правильного способа вывода пагинации. В WordPress можно показать только номера страниц, добавить стрелки, оставить текстовые ссылки «Предыдущая/Следующая» или собрать всё вместе — но конкретный результат зависит от темы и от того, как именно она выводит архивы.
Сразу важный момент: речь здесь о пагинации архивов и списков записей, а не о навигации внутри одной записи. Это разные механизмы, и для них используются разные функции и шаблоны.
Что именно можно изменить в пагинации WordPress
Стандартная пагинация WordPress обычно строится вокруг двух подходов. Первый — простая навигация с ссылками на предыдущую и следующую страницу архива. Второй — более подробная пагинация с номерами страниц, где посетитель видит текущую страницу, соседние номера и быстрый переход к началу или концу списка.
Для удобства посетителя чаще всего комбинируют три элемента:
- стрелки или короткие ссылки для перехода назад и вперёд;
- номера страниц, чтобы понимать масштаб архива и быстро прыгать по списку;
- подписи «Предыдущая» и «Следующая», если интерфейс должен быть максимально понятным без иконок.
Не во всех темах эти элементы уже есть в нужном виде. Иногда тема выводит только next_posts_link() и previous_posts_link(), иногда — собственную разметку, а иногда вообще отключает удобную навигацию в пользу бесконечной прокрутки или кнопки «Показать ещё».
Самый безопасный путь: проверить, что уже умеет тема
Перед тем как ставить плагин или лезть в шаблоны, посмотрите, как тема выводит архивы. Если у вас есть доступ к файлам темы, ищите в шаблонах архива и блога такие функции:
the_posts_navigation()— простая навигация «старее/новее»;the_posts_pagination()— пагинация с номерами страниц;paginate_links()— более гибкая генерация ссылок;next_posts_link()иprevious_posts_link()— отдельные ссылки на соседние страницы.
Если тема уже использует the_posts_pagination(), часто достаточно настроить её аргументы или CSS. Если же там стоит только простая навигация, тогда придётся менять шаблон архива или подключать плагин, который заменяет стандартный вывод.
Редактировать файлы темы лучше в дочерней теме. Иначе после обновления все изменения могут исчезнуть.
Как добавить номера страниц и подписи через код
Если вы работаете с шаблоном темы или дочерней темой, самый надёжный вариант — использовать paginate_links(). Эта функция позволяет собрать пагинацию с номерами страниц, а также добавить текстовые подписи и стрелки в нужном виде.
Ниже пример для архива записей. Его обычно вставляют в шаблон, где выводится цикл записей, например в archive.php, home.php или в шаблон категории. Перед изменением файла сделайте резервную копию и проверьте, что редактируете именно дочернюю тему.
$big = 999999999; // число-заглушка для get_pagenum_link()$pagination = paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var( 'paged' ) ),
'total' => $wp_query->max_num_pages,
'mid_size' => 2,
'end_size' => 1,
'prev_text' => '« Предыдущая',
'next_text' => 'Следующая »',
) );Здесь важны три вещи. Параметры prev_text и next_text отвечают за подписи и стрелки. mid_size и end_size управляют тем, сколько номеров страниц показывать рядом с текущей и по краям списка. А current и total должны соответствовать реальному архиву, иначе пагинация будет вести себя неправильно.
После этого выводите результат только если ссылки вообще есть:
if ( $pagination ) {
echo '<nav class="pagination" aria-label="Пагинация записей">' . $pagination . '</nav>';
}Такой вариант удобен, когда вам нужен полный контроль над текстом и количеством элементов. Но он требует аккуратности: если тема использует нестандартный запрос, например собственный WP_Query, то в коде нужно подставлять именно его объект, а не глобальный $wp_query.
Если нужен готовый плагин для пагинации
Когда менять шаблон не хочется или тема слишком сложная, проще использовать плагин, который заменяет стандартную навигацию на более гибкую. В реальных проектах для этого часто ставят WP-PageNavi: он как раз нужен там, где стандартные ссылки WordPress слишком бедные по интерфейсу и не дают удобно показать номера страниц.
Сценарий применения у него простой: архивов много, контента много, посетителю нужно быстро понимать, где он находится в списке, а тема не даёт удобной пагинации из коробки. Тогда плагин позволяет вывести номера страниц, текущую страницу, переходы к началу и концу, а также настроить текст для «Предыдущая/Следующая».
Но плагин не решает всё автоматически. Он не исправит сломанную разметку темы, не починит неверный запрос и не заменит работу с шаблонами, если архив вообще не выводится корректно. Если тема уже рисует собственную пагинацию, её ещё нужно заменить в шаблоне на вызов плагина.
Обычно это выглядит так: в шаблоне архива вместо стандартной навигации вызывается функция плагина, а внешний вид потом дорабатывается CSS. Если вам нужно посмотреть и другие решения для WordPress, иногда полезно заглянуть в каталог плагинов WPShop: https://wpshop.ru/plugins.
Как настроить стрелки, номера и текст ссылок без перегруза интерфейса
Не всегда стоит показывать все элементы сразу. Для новостного сайта или большого блога удобнее один вариант, для каталога — другой.
| Сценарий | Что показывать | Почему так удобнее |
|---|---|---|
| Небольшой блог | «Предыдущая/Следующая» + стрелки | Пользователю не нужен длинный список страниц |
| Большой архив или новостной сайт | Номера страниц + стрелки | Проще ориентироваться в объёме контента |
| Каталог или рубрики с большим числом материалов | Номера страниц + «Предыдущая/Следующая» | Удобно и для людей, и для возврата к соседним страницам |
Если интерфейс кажется перегруженным, уменьшайте не количество ссылок вообще, а диапазон видимых номеров. Обычно достаточно нескольких страниц вокруг текущей и пары ссылок по краям. Это особенно важно на мобильных устройствах, где слишком длинная строка пагинации быстро ломает верстку.
Для стрелок лучше использовать либо текстовые символы, либо иконки, но с понятной подписью для доступности. Если оставляете только стрелки без текста, у ссылки должен быть понятный aria-label, иначе навигация станет менее удобной для части пользователей и для скринридеров.
Что делать, если пагинация есть, но выглядит криво
Чаще всего проблема не в самой пагинации, а в стилях темы. Например, номера страниц могут быть слишком мелкими, активная страница — незаметной, а стрелки — съезжать на новую строку. Это уже вопрос CSS, а не логики WordPress.
Если тема использует стандартный класс .pagination или похожую обёртку, можно доработать стили в дочерней теме или через настройки кастомного CSS. Но перед этим откройте HTML-разметку в браузере и проверьте, какие классы реально выводятся. У разных тем они отличаются, поэтому универсальный CSS без проверки часто не срабатывает.
Практически полезно проверить три вещи:
- активная страница заметна визуально;
- кликабельная область достаточно большая для пальца на мобильном;
- стрелки и текст не ломают строку и не слипаются с номерами.
Если тема использует собственную пагинацию через конструктор или блоки, править может понадобиться не CSS, а шаблон блока или настройки самого конструктора. Здесь важно не смешивать всё в одну кучу: иногда проблема в разметке, иногда — в стилях, а иногда — в том, что пагинация вообще не подключена к нужному запросу.
Как проверить, что всё работает правильно
После настройки откройте архив с большим количеством записей и проверьте несколько страниц подряд. Переходы должны вести на реальные URL, текущая страница должна подсвечиваться, а ссылки «Предыдущая/Следующая» — менять направление в зависимости от того, где вы находитесь.
Если вы меняли шаблон вручную, проверьте ещё и такие моменты:
- на первой странице нет ссылки на несуществующую предыдущую страницу;
- на последней странице нет ссылки на несуществующую следующую страницу;
- в архиве с малым числом записей пагинация не показывается без необходимости;
- на мобильном экране элементы не налезают друг на друга.
Если после правок ссылки ведут не туда, обычно проблема в неправильном base или в том, что шаблон использует не тот объект запроса. Если пагинация исчезла совсем, проверьте, не сломался ли цикл записей и не отключён ли вывод навигации в теме.
В итоге выбор простой: если нужна быстрая и гибкая навигация без правки шаблонов, берите плагин; если нужен точный контроль над разметкой и поведением, настраивайте пагинацию в теме через paginate_links() или штатные функции WordPress. Для архивов с большим объёмом контента это обычно самый практичный путь к понятной навигации без лишней перегрузки интерфейса.