Многоуровневая пагинация — это удобный способ улучшить навигацию по сложным сайтам на WordPress, где необходимо разбивать контент на множество страниц и разделов. В отличие от простой пагинации с номерами страниц, многоуровневая позволяет создавать вложенные уровни навигации, что особенно полезно для каталогов, блогов с большим количеством рубрик и интернет-магазинов. В этой статье мы разберем, как создать такую навигацию с помощью популярного плагина ABC Pagination и дополнить ее кастомным кодом для расширения функционала.
Что такое многоуровневая пагинация и зачем она нужна
Традиционная пагинация выводит ссылки на страницы с контентом в одну линию или блок. Но если у вас есть иерархическая структура — например, категории и подкатегории, или страницы с дочерними страницами — нужно сделать навигацию более гибкой. Многоуровневая пагинация позволяет пользователю видеть, в каком разделе он находится, быстро переключаться между уровнями и не теряться в структуре сайта.
Плюсы многоуровневой навигации:
- Улучшение UX за счет понятной структуры.
- Повышение времени пребывания на сайте.
- Оптимизация SEO за счет правильного распределения ссылочного веса.
Недостаток — реализация сложнее, чем простая пагинация. Но с помощью ABC Pagination и кастомных функций можно сделать это быстро и без излишних сложностей.
Установка и базовая настройка ABC Pagination
Для начала установим плагин ABC Pagination. Это бесплатное решение с открытым исходным кодом, которое легко адаптируется под разные задачи.
- Перейдите в админку WordPress → Плагины → Добавить новый.
- В поиске введите «ABC Pagination» и установите плагин от WPSHOP.
- Активируйте плагин.
После активации в настройках появится раздел для управления пагинацией. Здесь можно выбрать стиль, количество ссылок, а также включить поддержку многоуровневой навигации.
Для базовой многоуровневой пагинации активируйте опцию «Enable hierarchical pagination» и сохраните изменения.
Создание многоуровневой пагинации в шаблоне WordPress
Теперь интегрируем пагинацию в тему. Обычно навигация вставляется в файлы шаблона, где выводятся записи — например, archive.php или category.php.
Добавьте следующий код в нужное место шаблона для вывода пагинации:
<?php if ( function_exists( 'wpqa_abc_pagination' ) ) {
wpqa_abc_pagination();
} ?>
Здесь wpqa_abc_pagination — это пользовательская функция с префиксом вашего домена (wpqa), которая оборачивает вызов пагинации плагина, чтобы избежать конфликтов и упростить поддержку.
Пример простой обертки для файла functions.php:
function wpqa_abc_pagination() {
if ( function_exists( 'abc_pagination' ) ) {
abc_pagination();
}
}
После добавления вызова пагинации вы увидите навигацию с многоуровневой структурой, если контент и так организован иерархически.
Кастомизация вывода пагинации
Для более гибкой настройки можно использовать фильтры и хуки плагина. Например, изменить количество ссылок вокруг текущей страницы или добавить стили.
Пример фильтра для изменения количества видимых ссылок:
add_filter( 'abc_pagination_links_count', 'wpqa_custom_pagination_links_count' );
function wpqa_custom_pagination_links_count( $count ) {
return 7; // увеличить количество ссылок до 7
}
Также можно менять HTML обертки для пунктов меню, добавлять иконки, классы и т.д.
Пример: многоуровневая пагинация для категорий и подкатегорий
Предположим, у вас есть блог с категориями и подкатегориями. Нужно, чтобы пагинация показывала уровень вложенности и позволяла переключаться между страницами в каждой категории.
Для этого можно комбинировать ABC Pagination с WP_Query и кастомной функцией:
function wpqa_custom_category_pagination() {
$current_cat = get_queried_object_id();
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$args = array(
'cat' => $current_cat,
'posts_per_page' => 10,
'paged' => $paged
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// вывод записи
the_title( '<h2>', '</h2>' );
}
// пагинация
abc_pagination( array('total' => $query->max_num_pages, 'current' => $paged) );
}
wp_reset_postdata();
}
В шаблоне вызовите wpqa_custom_category_pagination() вместо стандартного цикла. Это обеспечит корректное разделение постов по страницам с учетом выбранной категории.
Решение типичных проблем с многоуровневой пагинацией
Проблема 1: пагинация не учитывает текущий уровень вложенности
Часто бывает, что пагинация всегда ссылается на корень, игнорируя подкатегории. Чтобы это исправить, нужно правильно передавать параметры в WP_Query и ABC Pagination, учитывая текущий объект запроса.
Используйте get_queried_object() и передавайте ID категории или страницы в аргументы.
Проблема 2: конфликт стилей пагинации с темой
Если пагинация выглядит плохо, добавьте свои CSS классы или подключите стили плагина. Плагин ABC Pagination поддерживает кастомные классы для контейнера и ссылок.
Проблема 3: пагинация не работает с AJAX
Для динамической подгрузки страниц без перезагрузки используйте AJAX. В этом поможет пример из документации ABC Pagination или создайте свой обработчик на admin-ajax.php.
Заключение
Многоуровневая навигация с помощью ABC Pagination — это мощный инструмент для улучшения структуры и удобства сайта на WordPress. Правильная настройка плагина, использование кастомных функций и стилей позволит сделать навигацию понятной и удобной для ваших посетителей. Не забывайте тестировать пагинацию на разных типах страниц и учитывать особенности темы, чтобы избежать конфликтов.
Дополнительно рекомендуем изучить возможности плагина на официальной странице для расширенной кастомизации.