Как сделать автоматическое разделение статьи на страницы в WordPress

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

Стандартное разделение статьи на страницы в WordPress

По умолчанию WordPress поддерживает тег <!--nextpage-->, который можно вставить вручную в текст статьи для создания постраничного перелистывания. Однако вручную это неудобно и не масштабируется для большого количества контента.

Чтобы сделать процесс автоматическим, необходимо написать функцию, которая будет динамически вставлять этот тег в нужных местах перед выводом контента.

Автоматическое разбиение статьи на страницы по количеству слов

Часто выгодно разбивать статью так, чтобы на каждой странице было примерно одинаковое количество слов. Рассмотрим пример кода, который реализует такую логику.

function journalx_auto_paginate_by_words($content) {
    if (!is_singular() || !in_the_loop() || is_admin()) {
        return $content;
    }
    $words_per_page = 300; // количество слов на страницу
    $words = preg_split('/(\s+)/u', strip_tags($content), -1, PREG_SPLIT_NO_EMPTY);
    if(count($words) <= $words_per_page) {
        return $content;
    }
    $pages = [];
    $page_words = [];
    $count = 0;
    foreach($words as $word) {
        $page_words[] = $word;
        $count++;
        if($count >= $words_per_page) {
            $pages[] = implode(' ', $page_words);
            $page_words = [];
            $count = 0;
        }
    }
    if(!empty($page_words)) {
        $pages[] = implode(' ', $page_words);
    }
    return implode('<!--nextpage-->', $pages);
}
add_filter('the_content', 'journalx_auto_paginate_by_words');

Этот код берет содержимое поста, разделяет его на слова и формирует страницы, вставляя стандартный тег <!--nextpage--> между ними. После этого WordPress сам сгенерирует навигацию по страницам.

Автоматическое разделение статьи по заголовкам

Иногда логично разбивать статью по основным разделам, например, по заголовкам <h2>. Это позволит сделать переходы более осмысленными и удобными для читателя.

Вот пример функции, которая автоматически вставляет тег разбиения перед каждым заголовком второго уровня:

function journalx_auto_paginate_by_h2($content) {
    if (!is_singular() || !in_the_loop() || is_admin()) {
        return $content;
    }
    // Используем регулярное выражение для поиска h2
    $pattern = '/(<h2[^>]*>)/i';
    // Вставляем тег nextpage перед каждым h2, кроме первого
    $content = preg_replace($pattern, '<!--nextpage-->$1', $content, -1, $count);
    // Убираем первый вставленный тег, чтобы первая страница не была пустой
    if($count > 0) {
        $content = preg_replace('/^<!--nextpage-->/', '', $content);
    }
    return $content;
}
add_filter('the_content', 'journalx_auto_paginate_by_h2');

Такой подход делает структуру статьи более читаемой и позволяет пользователям удобно переходить между разделами.

Настройка и улучшение навигации по страницам

Для удобства пользователей важно оформить пагинацию в дизайне сайта. WordPress выводит базовый набор ссылок, но с помощью плагинов можно улучшить внешний вид и функционал.

Рекомендуемые плагины для улучшенной пагинации:

  • ABC Pagination — расширенный контроль над внешним видом и стилями пагинации.
  • Clearfy Pro — оптимизация и улучшение различных аспектов работы сайта, в том числе пагинации.

Для вывода навигации в шаблоне можно использовать функцию wp_link_pages(). Вот пример кастомной реализации с дополнительными параметрами:

wp_link_pages(array(
    'before' => '<div class="page-links"><span>Страницы:</span>',
    'after'  => '</div>',
    'link_before' => '<span class="page-number">',
    'link_after' => '</span>',
    'next_or_number' => 'number',
));

Если используете тему JournalX, она отлично совместима с подобными приёмами и позволит легко стилизовать пагинацию.

Советы по оптимизации и ограничениям автоматического разбиения

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

  • Проверяйте корректность HTML после вставки тегов — иногда сложные конструкции могут ломать разметку.
  • Избегайте слишком частого разбиения — 200-400 слов на страницу обычно оптимально.
  • Автоматическое разбиение по заголовкам лучше для статей с чёткой структурой, а по словам — для длинных текстов без большого количества подзаголовков.
  • Тестируйте работу на мобильных устройствах, чтобы навигация была удобной.

Если хотите дополнительно автоматизировать процесс и добавить расширенные возможности, рассмотрите разработку собственного плагина или расширение функций темы с применением AJAX для подгрузки страниц без перезагрузки.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как удалить товар из корзины WooCommerce без перезагрузки страницы
24.04.2026
Как автоматизировать публикацию журнальных статей в WordPress с примерами кода и плагинов
18.02.2026
Как убрать заголовок H1 из страницы WordPress: пошаговое руководство
09.11.2025
Как оптимизировать загрузку изображений в WordPress: практические советы и примеры кода
26.11.2025
Как удалить товар из корзины WooCommerce без перезагрузки страницы
27.04.2026
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙