Стандартная постраничная навигация WordPress до обидного примитивна для 2026 года. Две ссылки — «Предыдущие записи» и «Следующие записи» — сидят внизу страницы блога, как забытый артефакт из 2004-го. Посетитель, попавший на седьмую страницу архива, понятия не имеет, насколько он глубоко, сколько страниц ещё впереди и как перейти к нужному разделу. WP-PageNavi исправляет это целиком, заменяя бинарную навигацию чистой нумерованной пагинацией, которая меняет то, как пользователи и поисковики взаимодействуют с вашим контентом.

Почему стандартная навигация WordPress не справляется

WordPress поставляется с функцией навигации, которая выводит две ссылки: одну на более старые записи, другую на более новые. Это вся система. Для блога с 12 записями, разбросанными по 2 страницам, это работает — с натяжкой. Для сайта с 500 статьями на 50 страницах это кошмар юзабилити. Посетитель, желающий найти контент трёхлетней давности, вынужден нажимать «Предыдущие записи» сорок раз. Поисковый робот вынужден следовать по линейной цепочке ссылок, чтобы обнаружить весь архив, и если цепочка разрывается в любом месте — из-за редиректа, битой ссылки или тайм-аута, — все страницы после разрыва становятся невидимы для робота.

Стандартная навигация также не даёт никакой визуальной обратной связи о позиции пользователя внутри архива. Нет понятия «текущая страница», нет указания на то, сколько страниц существует, и нет возможности перейти к конкретному номеру страницы. Это цифровой аналог книги, где единственный способ перелистывать страницы — переворачивать их по одной, вперёд или назад, без оглавления и без номеров страниц.

WP-PageNavi заменяет это нумерованной панелью навигации. Как правило, она отображает нечто вроде Страница 5 из 47 с кликабельными ссылками на первую страницу, последнюю, предыдущую, следующую и диапазоном соседних номеров страниц. Текущая страница визуально выделена, давая пользователю чёткое ощущение позиции. Если в архиве 47 страниц, пользователь может перепрыгнуть с пятой на сороковую одним кликом.

Что WP-PageNavi делает на самом деле

По своей сути WP-PageNavi — это относительно небольшой плагин, который вводит одну ключевую функцию: wp_pagenavi(). Вы размещаете вызов этой функции в файлах шаблонов темы — обычно в index.php, archive.php, search.php и category.php — и она заменяет любые ссылки постраничной навигации, которые ваша тема выводит сейчас, на полноценную нумерованную панель. Функция принимает опциональный объект запроса, что означает корректную работу с кастомными циклами WP_Query, а не только с основным циклом WordPress.

Плагин также включает панель административных настроек, где можно сконфигурировать текстовые метки для каждого элемента панели навигации, не трогая ни строчки кода. Можно заменить «Страница» на нужный вам текст, изменить текст ссылок «Первая» и «Последняя» и задать количество отображаемых ссылок на страницы до и после текущей. Плагин поставляется с файлами перевода для более чем 20 языков, а добавление нового языка сводится к созданию файла .po через стандартный процесс локализации WordPress.

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

WP-PageNavi не заменяет существующую навигацию темы автоматически. Вы должны вручную добавить вызов функции wp_pagenavi() в файлы шаблонов темы. Плагин предоставляет вспомогательную опцию в разделе «Настройки», которая может попытаться выполнить автоматическую замену для некоторых тем, но ручная интеграция всегда надёжнее.

Установка и базовая настройка

Установка следует стандартному сценарию WordPress: перейдите в Плагины → Добавить новый, найдите «WP-PageNavi», установите и активируйте. Плагин лёгкий — менее 100 КБ — и не имеет зависимостей, кроме ядра WordPress. После активации появляется новый пункт меню: Настройки → PageNavi.

Панель настроек организована в две секции: Параметры PageNavi и CSS-стили. Секция параметров позволяет сконфигурировать:

  • Текст для количества страниц: метка перед номером страницы, например «Страница» (по умолчанию: Страница %CURRENT_PAGE% из %TOTAL_PAGES%)
  • Текст для текущей страницы: формат номера текущей страницы в панели навигации
  • Текст для ссылки на страницу: формат кликабельных ссылок на номера страниц
  • Текст для первой страницы: текст или символ ссылки «перейти на первую страницу»
  • Текст для последней страницы: текст или символ ссылки «перейти на последнюю страницу»
  • Текст для предыдущей страницы: текст или HTML-сущность для навигации назад
  • Текст для следующей страницы: текст или HTML-сущность для навигации вперёд
  • Количество отображаемых страниц: сколько соседних номеров отображать вокруг текущей
  • Множители для больших страниц: когда вставлять многоточие (...) между номерами страниц в больших архивах

Секция CSS-стилей содержит таблицу стилей по умолчанию. Можно выбрать использование стилей по умолчанию, полностью отключить вывод CSS и написать свой собственный или изменить предоставленный CSS прямо в панели настроек. Изменения сохраняются при обновлениях плагина, потому что они хранятся в таблице опций WordPress, а не в файлах самого плагина.

Самый критический шаг после установки — добавление функции wp_pagenavi() в тему. Откройте файл шаблона, где должна появиться пагинация — для большинства блогов это index.php. Найдите существующий код пагинации, который обычно выглядит так:

div>php next_posts_link('Предыдущие записи'); /div> div>php previous_posts_link('Следующие записи'); /div>

Замените его на:

php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>

Проверка function_exists предотвращает фатальную ошибку при случайной деактивации плагина. Если плагин активен, wp_pagenavi() выводит полноценную нумерованную панель. Если плагин деактивирован, ничего не выводится, и сайт изящно деградирует до отсутствия навигации — что лучше, чем ошибка PHP в продакшене.

Детальная интеграция в тему

Разные структуры тем требуют разных подходов к интеграции. Вот наиболее распространённые сценарии:

Стандартный индекс блога

Отредактируйте index.php и найдите вызов posts_nav_link(), next_posts_link() или previous_posts_link(). Замените весь блок навигации на wp_pagenavi(). Функция автоматически определяет общее количество страниц из глобального объекта $wp_query.

Кастомные циклы WP_Query

Если ваша тема использует кастомный запрос — например, секцию избранных записей или цикл по конкретной категории — вы должны передать объект запроса в wp_pagenavi() параметром:

php $custom_query = new WP_Query(array('posts_per_page' => 10, 'cat' => 5)); while($custom_query->have_posts()) { $custom_query->the_post(); } if(function_exists('wp_pagenavi')) { wp_pagenavi(array('query' => $custom_query)); } wp_reset_postdata(); ?>

Без передачи кастомного объекта запроса wp_pagenavi() будет использовать основной запрос, что приведёт к неверным номерам страниц и битым ссылкам для кастомных циклов. Это самая частая ошибка разработчиков при интеграции плагина.

Страницы архивов и категорий

Большинство тем используют archive.php как общий шаблон для всех типов архивов. Отредактируйте этот файл один раз, и улучшение пагинации применится одновременно к архивам категорий, меток, дат и авторов. Если в вашей теме есть отдельные шаблоны для разных типов архивов — category.php, tag.php, author.php — нужно редактировать каждый файл отдельно.

Результаты поиска

Страницы результатов поиска в WordPress могут растянуться на несколько страниц, если количество результатов превышает настройку записей на страницу. Отредактируйте search.php и добавьте wp_pagenavi() для включения нумерованной пагинации в результатах поиска. Это часто упускают из виду, но это значительно улучшает опыт пользователей, выполняющих широкие запросы с десятками или сотнями результатов.

WooCommerce и кастомные типы записей

WP-PageNavi работает с любым типом записей, включая товары WooCommerce, элементы портфолио, отзывы и любые кастомные типы, зарегистрированные с флагом has_archive = true. Отредактируйте соответствующий шаблон архива — archive-product.php для WooCommerce, archive-portfolio.php для портфолио — и добавьте вызов функции так же, как для стандартного индекса блога.

Стилизация и кастомный CSS

Стандартная таблица стилей создаёт чистую минимальную панель навигации с серыми границами, синими ссылками и выделенной текущей страницей. Она подходит для большинства тем без доработок, но почти наверняка вы захотите кастомизировать её под цвета и типографику вашего бренда. Стандартный CSS нацелен на класс .wp-pagenavi и его дочерние элементы: .pages, .current, .first, .last, .previouspostslink, .nextpostslink и .extend.

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

.wp-pagenavi { text-align: center; margin: 2rem 0; } .wp-pagenavi a, .wp-pagenavi span { display: inline-block; padding: 8px 14px; margin: 0 3px; border: 1px solid #ddd; border-radius: 4px; text-decoration: none; transition: background 0.2s; } .wp-pagenavi a:hover { background: #f0f0f0; } .wp-pagenavi span.current { background: #0073aa; border-color: #0073aa; color: #fff; font-weight: bold; }

Поле CSS в панели настроек плагина хранит ваши изменения в базе данных. Если вы предпочитаете управлять стилями через таблицу стилей темы — что обычно является лучшей практикой для контроля версий — просто отключите вывод CSS в настройках плагина и добавьте свои правила в style.css темы или кастомный CSS-файл, загружаемый через wp_enqueue_style().

Сравнение с альтернативами

Функция WP-PageNavi Стандартный WordPress WP-Paginate Ручной код
Нумерованные ссылки Да Нет Да Требуется разработка
Ссылки Первая/Последняя Да Нет Да Требуется код
Поддержка кастомных WP_Query Да Ограничена Да Через paginate_links()
Настройка текста Полная — через админку Через фильтры Частичная — страница настроек Полная — контроль разработчика
Настройка CSS Админка или стили темы Только стили темы Только стили темы Только стили темы
Поддержка перевода 20+ языков встроено Ручной перевод Ограничена Вручную
Автозамена существующей навигации Опциональный помощник Н/Д Да — автоматически Н/Д — вы пишете код
AJAX-пагинация Да — работает с AJAX Нет Нет Требуется кастомный AJAX
Активных установок 600 000+ Н/Д 40 000+ Н/Д
Цена Бесплатно Бесплатно (встроено) Бесплатно Время разработчика

Когда что выбирать

Выбирайте WP-PageNavi, если хотите самый проверенный, широко распространённый плагин пагинации с полной настройкой через панель управления, обширной поддержкой переводов и большим сообществом пользователей, решившим практически все краевые случаи. Более 600 000 активных установок — свидетельство надёжности. Плагин поддерживается Лестером Чаном, одним из самых уважаемых разработчиков в экосистеме WordPress, и непрерывно обновляется с 2008 года — почти два десятилетия стабильности.

Выбирайте WP-Paginate, если ваше главное требование — автоматическая замена существующих навигационных ссылок без редактирования файлов шаблонов. WP-Paginate перехватывает вывод WordPress и заменяет ссылки «Предыдущие/Следующие» автоматически — без изменения кода. Плата за это — менее гранулярный контроль над форматом вывода и меньше опций настройки в админке.

Выбирайте ручной код с использованием встроенной функции WordPress paginate_links(), если вам нужен полный, программный контроль над каждым аспектом вывода пагинации и вы комфортно пишете на PHP. Этот подход даёт нулевые накладные расходы плагина и возможность генерировать любую HTML-структуру. Минус — вы отвечаете за поддержку кода при обновлениях ядра WordPress: paginate_links() незначительно меняла поведение между крупными версиями, и нужно тестировать реализацию при каждом обновлении.

SEO-преимущества нумерованной пагинации

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

Распределение глубины сканирования становится равномерным. При линейной навигации Googlebot вынужден следовать по единственной цепочке ссылок, чтобы обнаружить все страницы архива. Страница 3 обнаруживается только через сканирование страницы 2, которая требует сканирования страницы 1. Чем глубже страница, тем дольше она обнаруживается и тем выше шанс, что цепочка сканирования где-то оборвётся. С нумерованной пагинацией каждая страница ссылается на каждую другую — напрямую или через ссылки на первую и последнюю — давая Googlebot множество путей обнаружения и снижая риск появления осиротевших страниц архива.

PageRank распределяется равномернее. В линейной цепочке PageRank течёт от страницы 1 к странице 2, затем от 2 к 3 и так далее. Каждый шаг ослабляет сигнал. Страница 10 получает ничтожную долю PageRank по сравнению со страницей 1. С нумерованной пагинацией ссылки текут в разных направлениях — от страницы 5 к странице 1, 10, 30 и всем соседним — создавая более сбалансированное распределение ссылочного веса по всему архиву.

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

Риск дублированного контента снижается. Без правильной пагинации WordPress может генерировать страницы «показать всё», бесконечную прокрутку или URL с параметрами, создающие дублированный контент. Чистая, последовательная структура URL WP-PageNavi с форматом /page/2/ гарантирует, что каждая страница архива имеет ровно один канонический URL, устраняя двусмысленность, которая сбивает с толку поисковики.

Таблица пагинации: структура и SEO-значение

Элемент пагинации SEO-сигнал Сигнал для UX Техническое требование
Индикатор текущей страницы Якорь для канонической самоссылки Осознание позиции — «Я на странице 5 из 47» Не должен быть кликабельной ссылкой во избежание петель 301
Ссылки Первая/Последняя Прямой путь сканирования к обоим концам архива Быстрый переход в начало или конец Должны присутствовать всегда для полного охвата
Ссылки на соседние страницы Множественные пути обнаружения Последовательный просмотр Показывать 2-3 страницы до и после текущей
Многоточие (пропуск) Информирует робота о глубине Визуальная подсказка о большом объёме Использовать, когда страниц больше отображаемого диапазона
Метка количества страниц Контекст общего размера архива Формирует ожидания — «Страница 2 из 3» vs «Страница 2 из 300» Генерируется динамически из $wp_query->max_num_pages

Доступность

Вывод WP-PageNavi по умолчанию оборачивает панель пагинации в div с классом wp-pagenavi. Для улучшения доступности рекомендуется обернуть вызов функции в элемент nav с атрибутом aria-label:

nav aria-label="Постраничная навигация"> php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?> /nav>

Это сообщает скринридерам, что содержимое является навигационной вехой, а aria-label уточняет, что это именно пагинация, а не общая навигация по сайту. Кроме того, убедитесь, что ваш кастомный CSS поддерживает достаточный цветовой контраст между фоном, текстом и цветом ссылок — стандартные стили используют светло-серую рамку (#ddd) и синие ссылки (#0073aa), что соответствует требованиям WCAG AA по контрастности на белом фоне.

Для навигации с клавиатуры плагин выводит стандартные элементы привязки, которые фокусируемы и управляемы клавишей Tab по умолчанию. Текущая страница выводится как span, а не ссылка, что означает, что она не получает фокус и не создаёт путаницы с интерактивным элементом, ведущим в никуда. Это соответствует стандартному паттерну доступных компонентов пагинации в вебе.

Часто задаваемые вопросы

Нужно ли редактировать файлы темы для использования WP-PageNavi?

В большинстве случаев — да. Плагин не заменяет существующую пагинацию темы автоматически — нужно добавить вызов функции wp_pagenavi() в файлы шаблонов. Плагин предоставляет вспомогательную авто-замену в настройках, но она работает не со всеми темами. Ручная интеграция в index.php, archive.php и search.php занимает около двух минут и является самым надёжным подходом.

Работает ли WP-PageNavi с кастомными циклами WP_Query?

Да. Передайте объект кастомного запроса в wp_pagenavi() параметром: wp_pagenavi(array('query' => $custom_query)). Без этого параметра функция использует основной запрос WordPress, что приведёт к неверным номерам страниц для кастомных циклов.

Замедлит ли WP-PageNavi мой сайт?

Нет. Плагин добавляет один запрос к базе данных для определения общего количества страниц — тот же запрос, который WordPress уже выполняет для пагинации. Накладные расходы пренебрежимо малы — обычно менее 1 миллисекунды на правильно настроенном сервере.

Можно ли использовать WP-PageNavi с WooCommerce?

Да. WooCommerce использует стандартную пагинацию WordPress. Добавьте wp_pagenavi() в шаблон archive-product.php темы или используйте опцию авто-замены в настройках плагина, если ваша WooCommerce-тема её поддерживает.

Как изменить количество отображаемых ссылок на страницы?

В настройках плагина (Настройки → PageNavi) измените поле «Количество отображаемых страниц». По умолчанию — 5. Увеличьте для сайтов с очень большими архивами.

Совместим ли WP-PageNavi с плагинами кэширования?

Да, работает корректно со всеми основными плагинами кэширования, включая W3 Total Cache, WP Super Cache, WP Rocket и LiteSpeed Cache. Пагинация генерируется на сервере при каждой загрузке страницы, поэтому закэшированные страницы отображают правильные номера.

Помогает ли WP-PageNavi в SEO?

Косвенно — да. Нумерованная пагинация создаёт множественные пути сканирования к страницам архива, распределяет PageRank более равномерно и предоставляет чёткие URL-структуры, которые поисковики индексируют и понимают эффективнее, чем линейные ссылки «Предыдущие/Следующие».

Можно ли перевести текст пагинации на мой язык?

Да. Плагин поставляется с файлами перевода для более чем 20 языков. Для языков, не включённых в комплект, можно создать .po-файл с помощью Poedit или Loco Translate. Также можно вручную изменить любую текстовую метку в панели настроек плагина без создания файлов перевода.

Что произойдёт, если деактивировать WP-PageNavi?

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

Поддерживает ли WP-PageNavi AJAX-пагинацию?

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

Нажмите для реакции