X
  • Дизайн та розробка сайту
  • Дизайн і створення сайтів. Розробка тем для WordPress. Створення Landing Page.
  • office@gnatkovsky.com.ua
  • @vgnat
  • Написати мені
Замовити послугу

Постраничная навигация WordPress с помощью the_posts_pagination()

Приклад
  • 2024-11-23
  • 10408 переглядів

  • Дизайн та розробка сайту

Доброго времени суток 🙂

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

Постраничная навигация WordPress с помощью the_posts_pagination()

Еще 18 декабря 2015 вышла новая версия WordPress. Версия 4.1 включала в себя несколько новых функций одна из которых как раз и есть нужная нам - the_posts_pagination(). Разработчики WordPress побеспокоились о нас с вами и добавили такую замечательную функцию. Теперь Вы можете не устанавливать плагины типа WP-PageNavi или использовать код на подобии того, что я показывал в статье - Постраничная навигация в WordPress без плагина.

Чтобы вывести навигацию, Вам просто нужно добавить вызов функции в нужное место на странице и все. Делать это нужно в файлы, где выводится цикл. Например, в index.php, archive.php, category.php, search.php и тд. Вам нужно найти цикл, он выглядит примерно так:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>  
// Тут код вывода текстов записи миниатюр и тд.
<?php endwhile; ?>  
<?php endif; ?> 

Дале Вам нужно после endwhile; добавить нашу функцию the_posts_pagination(). В итоге у Вас получится:

<?php endwhile; the_posts_pagination() ?>  
<?php endif; ?> 
// Или так
<?php endwhile; ?>  
<?php the_posts_pagination() ?> 
<?php endif; ?> 

Так же, если у Вас там есть вызов плагина wp_pagenavi() или самописного кода wp_corenavi();, можете удалить их. теперь они ни к чему. Их работу выполнит наша новая функция the_posts_pagination(). В результате у Вас внизу страницы должно появится вот такое поле с постраничной навигацией.

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

Если посмотреть на данную навигацию со стороны кода, HTML кода, который сгенерируется на странице, то он будет выглядеть примерно так:

<nav class="navigation pagination" role="navigation">
<h2 class="screen-reader-text">Навигация по записям</h2>
<div class="nav-links"><span class="page-numbers current">1</span>
<a class="page-numbers" href="http://localhost/?paged=2">2</a>
<span class="page-numbers dots">…</span>
<a class="page-numbers" href="http://localhost/?paged=5">5</a>
<a class="next page-numbers" href="http://localhost/?paged=2">Далее</a></div>
</nav>

Как видите, каждому элементу присвоены свои классы. При желании добавляете стили в файл style.css лежащий в папке с темой. Например, можно использовать стили которые я написал за 5 минут для данного урока:

.screen-reader-text{
font-size:20px;
line-height:40px;
}
.pagination .current .screen-reader-text {
position: static !important;
}
.pagination .page-numbers {
line-height:25px;
padding: 0 15px;
display: inline-block;
vertical-align:top;
color:#555;
font-weight: bold;
}

.pagination .page-numbers.current {
text-transform: uppercase;
font-size:25px;
background: #eee;
}

.pagination .current {
display: inline-block;
line-height:25px;
}

.pagination .prev,
.pagination .next {
background: #29AEE3;
color: #fff;
display: inline-block;
padding:0 5px;
}

.pagination .prev:hover,
.pagination .prev:focus,
.pagination .next:hover,
.pagination .next:focus {
background-color: #707070;
text-decoration:none;
}

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

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

Данная функция имеет несколько настроек, которые помогут Вам немного настроить пагинацию, если конечно это нужно. Я напишу все настройки сразу, а Вы при желании ненужные строки просто удалите. То есть данный код вставляется в то же место где Вы просто вставляли the_posts_pagination();

<?php the_posts_pagination(
$args = array(
	'show_all'     => false,
	'end_size'     => 2,
	'mid_size'     => 2,
	'prev_next'    => true,
	'prev_text'    => '«',
	'next_text'    => '»',
	'add_args'     => false,
	'add_fragment' => '',
	'before_page_number' => '',
        'after_page_number' => '',
	'screen_reader_text' => 'Смотреть другие страницы',
))
?> 

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

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

Давайте по порядку разберем, за что отвечает каждая из строк настроек.

  • 'show_all' => false, - Показывать или нет все страницы которые есть на сайте. По умолчанию нет, потому как если их много будет что-то страшное 🙂
  • 'end_size' => 2, - Количество страниц которые будут показаны в начале и в конце. Например, если в по умолчанию в начале и в конце по 1 цифре выглядит это так 1..6,7,8..99 и все. В данном примере мы установили значение 2. Значит у нас получится - 1,2..6,7,8..98,99. То есть чем больше значение, тем больше доступных в начале и конце.
  • 'mid_size' => 2, - Количество страниц вокруг текущей страницы. По умолчанию 1, значит у нас получится 1..6,7,8..99 - текущая страница - 7, по бокам по одной странице. В данном примере установлено 2 и станет вот так - 1..5,6,7,8,9..99. Текущая тоже сем и по бокам по две доступные страницы.
  • 'prev_next' => true, - Указывает нужно ли выводить кнопки по бокам, для переключения вперед или назад. То есть - предыдущая/следующая страница.
  • 'prev_text' => '«', - То что будет в кнопке назад. Можете написать текст, символ или добавить иконку, используя статью - Иконки из шрифта Font Awesome
  • 'next_text' => '»', - То же самое, только кнопка назад.
  • 'add_args' => false, - Массив аргументов (переменных запроса), которые нужно добавить к ссылкам.
  • 'add_fragment' => '', - В скобках можно добавить текст, который добавится к ссылкам. Пагинация продолжит работать без сбоев. Например, у Вас ссылка на третью страницу http://localhost/?paged=3, если Вы добавите в скобки слово page, то ссылка станет такой - http://localhost/?paged=3page.
  • 'before_page_number' => 'страница', - Данный текст выведется перед каждым номером страницы. Например - страница1, страница2 и тд. Пример можно посмотреть
    Постраничная навигация 4
  • 'after_page_number' => '!', - Этот текст выведется после номера страницы. На скриншоте выше это видно. В данном примере это просто знак восклицания.
  • 'screen_reader_text' => 'Смотреть другие страницы', - Текст над пагинацией. По умолчанию это - Навигация по записям , но если вы в скобки введете свой текст, например как в примере - Смотреть другие страницы, то он заменит стандартный.

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

На этом все, спасибо за внимание. 🙂

Якщо Вам була корисна моя праця, можете фінансово підтримати сайт або відключити блокувальник реклами, що займе 2 хвилини :)

Хочу підтримати фінансово Хочу відключити блокувальник

Оцініть статтю
  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
Проголосовало: 12, в среднем: 4.6 из 5
Читайте також

Deprecated: Функція WP_Query викликана з аргументом, який вважається застарілим з версії 3.1.0! Вираз caller_get_posts застарілий. Використовуйте ignore_sticky_posts. in /var/www/vhosts/gnatkovsky.com.ua/gnatkovsky.com.ua/public/wp-includes/functions.php on line 6078