Еще 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(). В результате у Вас внизу страницы должно появится вот такое поле с постраничной навигацией.
Если посмотреть на данную навигацию со стороны кода, 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; }
В итоге у Вас получится Вот такая навигация, уже имеющая более-менее нормальный вид:
Данная функция имеет несколько настроек, которые помогут Вам немного настроить пагинацию, если конечно это нужно. Я напишу все настройки сразу, а Вы при желании ненужные строки просто удалите. То есть данный код вставляется в то же место где Вы просто вставляли 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' => 'Смотреть другие страницы', )) ?>
После указания данных параметров, внешний вид немного изменился и теперь навигация выглядит так:
Давайте по порядку разберем, за что отвечает каждая из строк настроек.
- '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 и тд. Пример можно посмотреть
- 'after_page_number' => '!', - Этот текст выведется после номера страницы. На скриншоте выше это видно. В данном примере это просто знак восклицания.
- 'screen_reader_text' => 'Смотреть другие страницы', - Текст над пагинацией. По умолчанию это - Навигация по записям , но если вы в скобки введете свой текст, например как в примере - Смотреть другие страницы, то он заменит стандартный.
Вот и все настройки данной функции. Используя их и стили, можете настроить вывод навигации од себя и свою тему WordPress. Статья получилась не маленькая, но если разберетесь, то поймете, что сложного ничего нет. Данная функция упростит жизнь тем, кто хочет добавить постраничную навигацию себе в тему. Теперь больше не нужно использовать сторонних плагинов, создающих дополнительную нагрузку на сайт.
На этом все, спасибо за внимание. 🙂