ГлавнаяПлагиныПостраничная навигация для WordPress с помощью плагина WP-PageNavi

Постраничная навигация для WordPress с помощью плагина WP-PageNavi

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

Установка плагина

WP-PageNavi один из самых популярных и простых плагинов для реализации постраничной навигации или «пагинации» в WordPress. Он доступен в директории плагинов на WordPress.org, и его можно установить из панели администрирования WordPress в разделе Плагины → Добавить новый.

Установка плагина WP-PageNavi

Установка плагина WP-PageNavi

После установки и активации плагина вам следует внести некоторые изменения в вашу активную тему WordPress. Она находится в директории wp-content/themes. Найдите в этой директории папку с названием вашей активной темы.

Стоит отметить, что в некоторых темах уже встроена поддержка плагина WP-PageNavi, и после активации она сразу будет отображать постраничную навигацию вместо стандартной, но такие темы встречаются крайне редко. В большинстве случаев, вам придётся в ручную вносить изменения для поддержки постраничной навигации.

В файлах вашей темы следует найти вызов функций next_posts_link и previous_posts_link. Они могут быть в нескольких местах, но чаще всего в файлах index.php, archive.php и functions.php.

Эти функции выводят стандартную навигацию, и для вывода постраничной навигации с помощью WP-PageNavi, их стоит заменить вызовом одной новой функции wp_pagenavi.

Для примера рассмотрим стандартную тему Twenty Twelve. В файле functions.php найдите следующий код:

<nav id="<?php echo $html_id; ?>" class="navigation" role="navigation">
	<h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3>
	<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentytwelve' ) ); ?></div>
	<div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?></div>
</nav><!-- #<?php echo $html_id; ?> .navigation -->

И вместо вызова функций next_posts_link и previous_posts_link вызывайте функцию wp_pagenavi:

<nav id="<?php echo $html_id; ?>" class="navigation" role="navigation">
	<h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3>
	<?php if ( function_exists( 'wp_pagenavi' ) ) wp_pagenavi(); ?>
</nav><!-- #<?php echo $html_id; ?> .navigation -->

Обратите внимание на третью строку. Здесь мы так же добавили обращение к функции function_exists перед вызовом wp_pagenavi. Это поможет предотвратить вывод ошибки в случае деактивации или отсутствия плагина WP-PageNavi.

После сохранения файла, перейдите на любую страницу с вашими записями, и вы увидите постраничную навигацию в дейтсиви:

Постраничная навигация в Twenty Twelve

Постраничная навигация в Twenty Twelve

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

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

Настройки WP-PageNavi

В разделе Параметры → PageNavi вы сможете изменить ряд настроек для вашей постраничной навигации, в том числе: максимальное количество страниц, отображение в виде выпадающего списка, использование встроенных стилей и т.д.

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

О постраничной навигации «без плагинов»

Если вы прочитали статью о том, как реализовать постраничную навигацию без плагинов в WordPress — мы крайне не рекомендуем этот метод, и это относится не только к постраничной навигации. Большинство статей и уроков серии «без плагинов» просто копируют код из плагина, и вставляют его в различные участки вашей темы.

Подход к расширению WordPress «без плагинов» не имеет никаких преимуществ, зато имеет немалое количество недостатков:

  • Вам приходится всегда копаться в коде
  • Если что-то пошло не так, вы не можете с лёгкостью деактивировать плагин
  • При смене или обновлении вашей темы, вы теряете все ваши дополнения
  • Это небезопасно и может привести к взлому вашего сайта

Плагины созданы именно для расширения функционала WordPress, поэтому не стесняйтесь ими пользоваться.

Альтернативы

Если вам по какой-либо причине не подошёл плагин WP-PageNavi, в качестве альтернативы советуем рассмотреть плагины WP-Paginate и WP Page Numbers, которые реализуют подобный функционал.

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

Константин Ковшенин

Сооснователь журнала WP Magazine и первой конференции WordCamp в России. Разработчик в компании Automattic, принимает активное участие в развитии ядра WordPress. Любимый язык программирования: Python.

Подписаться на рассылку

Подписаться → Подпишитесь на бесплатную рассылку журнала WP Magazine и получайте новости, события, подборки тем и плагинов, уроки, советы и многое другое в мире WordPress!

  • Виталий

    Здравствуйте! Не могу сделать постраничную навигацию. Не нахожу указанные Вами коды подлежащие замене. Могли бы Вы оказать помощь через Skype (демонстрация экрана)? Или предложите другой способ общения. Спасибо.

    • Виталий, пришлите нам ссылку на архив (или оставьте комментарий) с вашей темой WordPress и мы покажем где производить замену.

  • К сожалению на странице меток навигация не работает. Отображает только первую страницу, а при переходе на вторую и так далее выдаёт 404. И с плагином и с кодом не в какую.
    Не подскажите как это исправить?

    • Здравствуйте. Можете уточнить тему, которой вы пользуетесь (ссылку на архив) и пример страницы меток?

  • Parse error: syntax error, unexpected T_ELSEIF in /home/u403562536/public_html/wp-content/themes/online-marketer/functions.php on line 151 — сидел мудрил в коде, тут вылазит эта ошибка! Я уже скачал заново тему и перекопировал весь файл functions.php, а оно всё ровно! Помогите пожалуйста, я не могу зайти на блог!!!

    • Егор, покажите содержимое вашего файла functions.php? Скопируйте весь код и вставьте его на pastebin.com а затем пришлите нам ссылку.

  • Здравствуйте!
    Плагин скачала,код в index.php записала, но навигация не работает.
    Подскажите в чем может быть причина?
    Тема WebNews

    • Вера, мы скачали тему WebNews, она уже поддерживает плагин WP Page Navi — вы можете в этом убедиться найдя wp_pagenavi в файле index.php, archive.php и другие. Возможно вы скачали старую версию темы или забыли активировать плагин WP Page Navi? Скопируйте весь код из файла index.php вашей темы на сайт pastebin.com и пришлите нам ссылку — мы посмотрим.

  • Добрый день!
    Поставила плагин, вообще не работает на теме Leaf.
    В моей теме отсутствует постраничка и хотелось бы все-таки ее иметь. Спасибо!

    • Ксения, скажите, а вы вносили изменения в шаблоны вашей темы как описано в статье?

  • Дима

    Добрый день, не работает постраничная навигация в теме Zenshop, делал всё описанное в статье, но ничего не помогло, подскажите что делать?

  • обновил движок с 3.5 до 3.6 и всё навигация исчезла ((( актевировал деактивировал.. что я только не делал..кэш чистил..короче все..нифига

    • Если речь идёт о навигации внутри панели администрирования WordPress, то это исправляется путём удаления всех файлов в директории wp-content/languages, затем залейте туда новые файлы из русского дистрибутива WordPress 3.6. Если же речь идёт о постраничной навигации с помощью плагина WP-PageNavi, то насколько мы видим на вашем сайте всё работает.

  • Юлия

    Здравствуйте. у меня тема celestial-lite и я никак не могу установить список страниц. Помогите пожалуйста

    • Юлия, сообщите нам адрес вашего сайта, и по возможности пришлите архив темы с вашими изменениями.

  • Спасибо за статью. Установил, настроил — все работает.

  • Спасибо! Благодаря Вам, я сделала красивую постраничную навигацию своему блогу :)
    P.S. У меня модифицированная тема Twenty Twelve (переписала там весь css и часть php-файлов)

    • Елена, не за что! Советуем в дальнейшем не изменять существующие темы, а использовать для этого дочерние темы. Они позволяют сохранить ваши изменения даже при обновлении родительской темы. Успехов!

      • Я просто папку с темой скопировала, назвала другим именем и потом уже в своей папке правила :) Про дочерние темы прочитала, когда уже всё поменяла

        • В таком случае если выйдет обновление к оригинальной теме, вы её можете пропустить, что тоже не очень хорошо, т.к. обновления могут содержать закрытые «дыры», как например многие темы с библиотекой TimThumb.

  • Доброго времени суток вам, подскажите как сделать такую навигацию в стандартном шаблоне Twenty Ten?
    Нигде вообще не вижу хоть какого-то намека на этот код… Прогуглил кучу блогов, везде пишут одно и то же — index.php, archive.php — ищите там. Видимо, после недавнего обновления стандартных тем там все перемешалось… в общем, хочется сделать норм навигацию :) Помогите плз.

  • Спасибо за пост! Коротко и ясно) установил за 5 минут! Хоть раньше и сталкивался с данным плагином, но уже не помню где и сто менять надо)

    • Рады были помочь. Спасибо за ваш комментарий Денис!

  • Рады были помочь!

  • Роман, в теме Twenty Ten этот код находится в файле loop.php в самом конце. Там рядом комментарий «Display navigation to next/previous pages when applicable» — можете по нему поиск выполнить.

    Успехов!

    • Анатолий

      Добрый день. Я в этой теме нашел этот файл, но изменения ни к чему ни привели. Пробовал кучу плагинов, какие смог только найти, пробовал ваш метод, но ничего не помогло. Я в этом коде

      заменил две средние строки

      И ничего не произошло. Подскажите пожалуйста, в чем причина.

  • Андрей, у вас наверное что-то с пермалинками, если посетить страницу которую вы дали но только с / в конце, то всё работает нормально.

  • Елена, изменения нужно внести в файле loop-nav.php в теме Responsive. Если никак не получается, напишите нам на wpmagru@gmail.com

    • Vladimir

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

      • Если вы о сайте WP Magazine, то встроенную в теме Semicolon.

  • Константин, подскажите, как можно сделать реверсную навигацию? Например:

    366 365 364 … 3 2 1

    • Насколько мне известно из коробки с WP-PageNavi к сожалению никак, но может быть вам удастся его дописать :)

  • RomanMorenets

    Цитата из статьи: «Вам приходится всегда копаться в коде »
    Дилетантский подход. Для чего же код, если в нем не рекомендуется копаться? Написание собственного функционала в обход использования плагина позволяет держать на сайте только те функции, которые действительно нужны. В том время как плагины часто напичканы кучей лишних фич, которые только нагружают сайт. И если написать код правильно, вынести его в отдельный файл, то все будет прекрасно обновляться. Люди, не бойтесь экспериментировать! Статья хорошая, одна в ней проблема, что в гугле она по запросу «пагинация wordpress без плагина» вылазит на 2-м месте. Наверняка не я один так купился :Р

    • Роман, спасибо за ваше мнение! Если вы хотите писать код и экспериментировать, это здорово, но делать этого в functions.php не нужно. Создайте собственный плагин и опишите в нем собственный код для пагинации, без тех «лишних фич» которые вам не понравились в других плагинах.

      Проблема с functions.php в том, что после того, как вы прочитаете 30 статей на тему «как сделать X без плагина — скопируйте X в functions.php» ваш файл functions.php станет полной кашей, и вам сложно будет «копаться в этом коде», ну и другие недостатки упомянутые в статье. Если же вы этот же самый код разместите в разных плагинах, вам будет легче ими управлять.

      В общем суть такова: используйте готовые плагины, а если не устраивает плагин, напишите свой собственный плагин — ведь это не сложнее чем пихать все подряд в functions.php :)

  • Ольга

    Большое спасибо!!!Все более чем понятно! Мучалась с этой постраничной навигацией весь день. Нигде не могла найти вразумительного ответа на вопрос. Нечаянно наткнулась на ваш сайт, а ответ лежит как на ладошке. Еще раз спасибо. Побольше бы таких пояснительных статей бы, для нас новичков))

    • Всегда рады помочь, спасибо за добрые слова :)

  • Евгений

    привет ,у меня тема sixteen не могу найти где менять код, если возможно подсказать,заранее благодарю.

    • Евгений, в теме Sixteen есть функция sixteen_pagination() в файле functions.php, где реализована пагинация в теме. К сожалению функцию нельзя переопределить в дочерней теме, поэтому вам придется вносить изменения напрямую в тему Sixteen.

  • Елена

    Проблема с 404, первая нормально, а потом навигация не срабатывает, не могли бы вы помочь. Спасибо заранее.

    • Убедитесь в том, что у вас активны постоянные ссылки в разделе Параметры → Постоянные ссылки. Если это не поможет, то возможно это конфликт с другим плагином или с темой — попробуйте деактивировать все плагины и включить стандартную тему.

  • Дмитрий

    Привет!!!я вообще не нашел такого тега у себя в файле, но в параметрах все есть но почему то не работает,что делать?

    • Какую тему вы используете?

  • Вадим Иванов

    Благодарю за совет!

  • Чаще всего это возникает тогда, когда тема «внедряет» весь код плагина в саму тему, чего делать крайне не рекомендуется. Попробуйте включить другую тему и активировать плагин WP-PageNavi.

  • Спасибо, но записи не нашел.. тема Decode.

  • Александр

    Подскажите, пожалуйста, в каком файле вносить изменения в теме sunspot, чтобы заработал плагин WP-PageNavi?

  • Александр

    Подскажите, в каком файле вносить изменения в теме sunspot, чтобы заработал WP-PageNavi?

  • Beau Bekhterev

    Добрый день!

    Подскажите пожалуйста, как правильно добавить постраничную навигацию для темы Make в Рубриках? (она поддерживает навигацию из коробки, но, по-моему, только для Записей)

  • Владимир

    Привет. помогите с темой wellness. меняю код и тема проподает

  • Анастасия

    Здравствуйте. Помогите поменять код в iconic-one. После того как меняю код в functions навигация появляется, но потом сайт работает некорректно.

  • Павел

    Тема current не могу найти

  • Галя

    Добрый день, у меня тема raindrops, версия 1.237, нашла нужную функцию в файле functions.php, но там next_posts_link и previous_posts_link встречается в двух местах и код совсем не похож, на приводимый в примере. Одна часть кода —

    $html = ‘%1$s%2$s’;

    $html = sprintf( $html, get_next_posts_link( ‘←’ . $raindrops_old . esc_html__( ‘ Older posts’, ‘Raindrops’ ) ), get_previous_posts_link( » . $raindrops_new . esc_html__( ‘Newer posts’, ‘Raindrops’ ) . ‘→’ ), $position );

    echo apply_filters( ‘raindrops_next_prev_links’, $html, $position );

    и есть ещё вторая часть:

    max_num_pages )

    ?>

    max_num_pages )

    ?>

    <?php

    }

    Если, что неверно написала -удалите комментарий. Спасибо.

  • Vic

    Здравствуйте, у меня тема Pure Line. Не могу настроить WP-PageNavi. В файле navigation.php для темы Pure Line уже прописана функция wp_pagenavi, но она не попадает под условия if ( is_singular() and !is_page() ). Помогите разобраться, что это за условия. Похоже, что это как-то связано с тем, что записи на главной странице располагаются в две колонки. Как быть в таком случае? Нужен ли данный плагин и как осуществлять навигацию в подобном случае? Спасибо.

    • is_singular() возвращает истину на одиночных страницах, is_page() возвращает истину при отображении страниц (тип записи). Ваше условие срабатвает при отображении одиночных записей, но не страниц (! это отрицание).

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

  • Vic

    Здравствуйте. Опубликовал свой комментарий, а он почему-то пропал, жаль потерянное время. Делаю вторую попытку. У меня тема Pure Line. Не могу настроить WP-PageNavi. В теме Pure Line в файле navigation.php функция wp_pagenavi() уже прописана. Но она не удовлетворяет условиям if ( is_singular() and !is_page() ). Возможно это связано с тем, что записи на главной страничке выводятся в две колонки. Как быть в этом случае (как осуществлять навигацию) и нужен ли в этом случае плагин WP-PageNavi? Спасибо.

  • Sergey Zakharenko

    Добрый день! У меня вывод постов происходит через new WP_Query. После установки WP-PageNavi появилось разделение по страницам, но, при переходе по пагинации адрес меняется на /page/2 и т.д., но всегда отображаются посты с первой страницы. С чем это может быть связано?

    • Sergey Zakharenko

      Уже разобрался, была ошибка в запросе new WP_Query )) Все работает, спасибо!!

  • Дамир

    Привет, почему данный способ не работает, если делать через плагин Code Snippets, т.е. создаёшь сниппет и вставляешь туда:
    if ( function_exists( ‘wp_pagenavi’ ) ) wp_pagenavi();

  • Татьяна

    Здравствуйте!Ё У меня на сайте установлена тема
    Rising-SunВерсия: 1.0
    Постраничная навигация не устанавливается вообще.
    Кроме этого после установки постраничной навигации , теперь посетители моего сайта не попадают на главную страницу, а на статью выше которой появилась вот такая надпись : wp_pagenavi ()wp_pagenavi ()
    Я не могу ее убрать . Если вам не сложно помогите мне в этом вопросе.

  • nashagradka

    Тема eStore: navigation.php код

    Суть вопроса при навигации происходит вывод несуществующей страницы. Подскажите как исправить

    Выберите тему для изменения:

  • Юлия

    Здравствуйте! Тема minamaze. Ни в одном файле редактора нет похожего кода, index.php вообще практически пустой. Как сделать постраничную навигацию?

    • Юлия, смотрите файл lib/functions/template-tags.php.

  • Valentin Biletskij

    Здравствуйте. У меня вообще не работает навигация страниц в RT-Theme 18 почему?

  • Valentin Biletskij

    И также не нашел где находятся коды что бы их поменять и поставить плагин в теме RT-Theme 18. подскажите пожалуйста, потому что получается статьи не отображаются , то есть 10 на странице а остальные не видно, нет перехода на следующую страницу, только в архивах их видно и то из за того что больше 10 статей я в месяц не писал. Вот подскажите

  • Valentin Biletskij

    Тема RT-Theme 18 подскажите где находится постраничная навигация. Спасибо.

  • Max Glazunov

    Добрый день. Не могу найти где заменить нужный код для того чтобы плагин заработал. Тема mystique. Помогите пж-ста. Заранее благодарю

  • Константин, добрый вечер. Долго искала в своей теме код, пока не прочитала в комментариях вопрос по этой же теме.
    Моя тема Twenty Ten, код в файле loop.php.
    Код вставила. В итоге внизу страницы пагинация появилась, а вверху так и остались — предыдущие записи, следующие записи.
    Где бы это исправить, подскажите, пожалуйста.
    А! Всё! Нашла! Ещё вверху файла нужно было вставить этот же код. Теперь все нормально.
    Только не очень красиво смотрится — какими-то черточками. Как сделать странички квадратиками?

  • Роман

    Добрый день! Ребят, подскажите где находятся функции next_posts_link и previous_posts_link в теме
    Wcolor 1.01. Вроде все перерыл, но так и не нашел….

  • Михаил

    Сделал всё как и описано в инструкции, но ничего не получилось, тема Twenty Twelve. Помогите, что не так

  • Valeriy Maximenko

    Доброе время суток)) у меня тема PATUS. Поменял в ней на в файлах index, archive, search Ничего не изменилось-навигации страниц нет. Может подскажите, что делать.
    Спасибо.

  • Иван

    Здравствуйте, помогите пожалуйста найти куда,где и что вставлять в теме Responsive. Плагин установил. А вот с кодом проблема ни в индексе ни в функциях подобного даже нет.

  • Иван

    Привет, у меня тема Responsive. Я нашол код в файле loop_navi.php, но к сожаление, когда я изменю его, ничего не получается! Можете ли вьь помочь мне.
    Поздрави из Болгарии.

  • Никита

    Доброго времени суток! Не могу поставить плагин на тему ColorMag. Выводиться стандартная навигация, а новая не выводиться. И таких строчек кода тоже не могу найти. Буду очень благодарен за совет.

  • Андрей

    Много где нашел next_posts_link, но не понимаю как и где менять. Тема — edumag. Если можете пдскажите

  • тамара седова

    Здравствуйте! Тема — academica, не могу найти в каком файле код навигации, помогите.

  • Татьяна Тищенко

    Добрый день. У меня тема Sydney. К сожалению, не могу найти next_posts_link и previous_posts_link в файлах index.php, archive.php и functions.php. Подскажите, пожалуйста, как решить проблему.

  • Алекс

    Привет у меня тема catch-responsive не могу найти где менять код помогите пожалуйста

  • Alex Snitkin

    В теме Sydney замена не работает. Код менял в template-tags.php. В других файлах ссылок на next_posts_link не нашел. Что еще можно попробовать?

  • Здравствуйте. Не знаю актуальна тема или нет ? У меня другая проблема. Пагинации на главной нет В рубриках все работает. Порылся в интернете. Рекомендуют поменять query_posts(‘cat=……Но у меня в index.php другие строки ?php query_posts(‘order=ASC’ );if (have_posts()) : ?

    Честно парюсь уже 4 дня не могу найти вариантов.
    При попытке заменить order на cat= происходит ошибка на главной .

    подскажите как исправить.