Как настроить пагинацию в WordPress: с плагином и без плагина?

В статье рассмотрим, как добавляется и настраивается пагинация WordPress для удобного поиска информации посетителями.

Постраничная навигация: что это, зачем нужна

Нужна для того, чтобы группировать и сортировать большие объемы данных.

Бывает двух видов: алфавитная и числовая. Первая – для удобного представления словаря или раздела F.A.Q. Числовая помогает пользователю ориентироваться и находить нужный контент.

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

Делаем алфавитную пагинацию

Вывести информацию по буквам алфавита просто: с помощью Alphabetic Pagination.

1. Перейдите Плагины -> Добавить новый, введите “Alphabetic Pagination” в форму поиска и нажмите клавишу [Enter].
2. Установите и активируйте.
3. Перейдите Настройки – Alphabetic Pagination.

Страница настроек плагина Alphabetic Pagination

Основные настройки

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

Display on all lists? – выбор мест и разделов вывода алфавитной пагинации.

Hide/Show pagination if only one post available? – показать/скрыть разбивку, если на сайте один пост.

DOM Position? – место вывода. Оставьте по умолчанию.

Language selection? – язык. Выберите “русский”.

Styles – стиль алфавитного блока (горизонтальный, вертикальный, строчные или прописные буквы).

Disable Empty Alphabets? – показать/скрыть разбивку, если нет постов.

4. Установите нужные опции и нажмите кнопку Save Changes.

Если выбрана автоматическая вставка, то главная будет иметь вид:

Алфавитная пагинация на главной странице сайта

В другом случае – вывод набора шорткодов для вставки.

Страница настроек плагина Alphabetic Pagination

5. Добавьте шорткоды в файлы шаблонов.

Вывод числовой пагинации WordPress

Постраничная разбивка есть почти во всех темах WP. Одни используют стандартную, а другие – с технологией AJAX.

Но иногда нужно изменить или создать свой функционал навигации. Есть 2 способа: плагин, кастомная функция.

Плагин

Есть несколько хороших дополнений для решения задачи. Рассмотрим на примере бесплатного WP-PageNavi.

1. Установите и активируйте.
2. В админке перейдите в раздел Настройки -> WP-PageNavi.
3. Сделайте основные настройки (шаблон, количество и диапазон страниц для показа) и нажмите кнопку Сохранить изменения.
4. В шаблонах темы добавьте код:

<?php wp_pagenavi(); ?>

Если нужно заменить/добавить постраничную навигацию для блога, используйте шаблоны index.php, archive.php, search.php.

Числовая пагинация wordpress с помощью WP-PageNavi

Кастомная функция

Если установка/работа плагина не устраивает, можно создать свою функцию.

Откройте файл functions.php активной темы и вставьте код:

function wpschool_page_navi() {
    global $wp_query;
    $pages = '';
    $maxpages = $wp_query->max_num_pages;
    if ( !$currentpage = get_query_var( 'paged' ) ) {
        $currentpage = 1;
    }
    $link['base'] = str_replace( 999999999, '%#%', get_pagenum_link( 999999999 ) );
    $link['totalpages'] = $maxpages;
    $link['currentpage'] = $currentpage;
    $totalpages = 0; //1 - вывести "Страница N из N", 0 - не выводить
    $link['mid_size'] = 3; //к-во ссылок показывать слева и справа от текущей
    $link['end_size'] = 1; //к-во ссылок показывать в начале и в конце
    $link['prev_text'] = 'Пред.';
    $link['next_text'] = 'След.';
    if ( $maxpages > 1 ) {
        echo '<div class="navigation">';
    }
    if ( $totalpages == 1 && $maxpages > 1 ) {
        $pages = '<span class="pages">Страница ' . $currentpage . ' из ' . $maxpages . '</span>'."\r\n";
    }
    echo $pages . paginate_links($link);
    if ( $maxpages > 1 ) {
         echo '</div>';
    }
}

Измените код под свои нужды (отмечено в комментариях).

Чтобы разбивка отображалась, пропишите PHP-строку в шаблон темы:

<?php if (function_exists('wpschool_page_navi')) wpschool_page_navi(); ?>

Отдельно о пагинации постов

В движке также можно разбить посты и страницы. Для этого откройте на редактирование запись, активируйте режим Текст и вставьте тег <!--nextpage-->.

Пагинация wordpress поста

Для нового редактора Gutenberg есть блок Разрыв страницы.

Пагинация wordpress поста в Gutenberg

С точки зрения SEO, к подстраницам нужно добавлять атрибут каноникал. Тут приходит на помощь All in One SEO Pack. Просто перейдите All in One SEO -> Общие настройки и включите опцию Использовать nofollow для страниц/записей с пагинацией.

Настройка плагина All in One SEO Pack

Если не работает переход

Обычно в итоге выводится ошибка 404.

Ошибка 404

Это значит, что запрошенная страница сайта не существует. Способы решения:

  • перейдите в админке в раздел Настройки -> Постоянные ссылки и нажмите кнопку Сохранить изменения;
  • очистите кэш на сайте и в браузере;
  • проверьте корректность работы всех активных плагинов;
  • пересмотрите добавленный вручную код на предмет ошибок.
Курс WordPress-разработчик
Если Вам понравилась статья — поделитесь с друзьями
Михаил Петров
Привет! Меня зовут Михаил Петров. Я копирайтер и занимаюсь этим с 2013 года. Скрупулезность и ответственность - моя фишка! Не могу делать как попало и добиваюсь, чтоб заказчик сказал минимум “неплохо”. За все время своей работы пришлось написать и отредактировать немало разной “текстовухи”, включая SEO-тексты, отзывы и прочую чушь. На сегодняшний день специализируюсь на написании информационных статей и руководств технического направления. Вижу смысл и светлое будущее в текстах для людей, а не для машин.
Задать вопрос