Постраничная навигация в WordPress без плагина (альтернатива WP-PageNavi)
Опубликовано: 23.08.2018

Практически любой блоггер, который ведет свой блог на движке WordPress, знаком с плагином WP-PageNavi, который выводит постраничную навигацию такого вида:
Постраничная навигация Wordpress без плагина - Константин ХМелев
Но не каждый знает (включая меня до недавнего времени), что WordPress имеет встроенную функцию (начиная аж с версии 2.1), которая реализует практически тот же самый функционал . Т.е. необходимость в использовании плагина отпадает.
Некоторое время я пользовался другим аналогичным решением , за что большое спасибо его автору Тимуру.
Функция, которую я вам предлагаю, совсем небольшая по размеру:
function wp_corenavi() { global $wp_query; $pages = ''; $max = $wp_query->max_num_pages; if (!$current = get_query_var('paged')) $current = 1; $a['base'] = str_replace(999999999, '%#%', get_pagenum_link(999999999)); $a['total'] = $max; $a['current'] = $current; $total = 1; //1 - выводить текст "Страница N из N", 0 - не выводить $a['mid_size'] = 3; //сколько ссылок показывать слева и справа от текущей $a['end_size'] = 1; //сколько ссылок показывать в начале и в конце $a['prev_text'] = '«'; //текст ссылки "Предыдущая страница" $a['next_text'] = '»'; //текст ссылки "Следующая страница" if ($max > 1) echo '<div class="navigation">'; if ($total == 1 && $max > 1) $pages = '<span class="pages">Страница ' . $current . ' из ' . $max . '</span>'."\r\n"; echo $pages . paginate_links($a); if ($max > 1) echo '</div>'; }Данный код необходимо поместить в файл functions.php вашего шаблона. В функции всего пять опций, они отделены разрывами строк. Комментарии я написал, думаю, тут все понятно.
Для того, чтобы вывести навигацию в нужном месте, вставляйте в шаблон следующий код:
<?php if (function_exists('wp_corenavi')) wp_corenavi(); ?>HTML-код, который получается в результате вывода функции, выглядит следующим образом:
<div class="navigation"> <span class="pages">Страница 7 из 27</span> <a class='prev page-numbers' href='http://wordpress31/page/6/'>« Предыдущая</a> <a class='page-numbers' href='http://wordpress31/page/1/'>1</a> <span class='page-numbers dots'>...</span> <a class='page-numbers' href='http://wordpress31/page/4/'>4</a> <a class='page-numbers' href='http://wordpress31/page/5/'>5</a> <a class='page-numbers' href='http://wordpress31/page/6/'>6</a> <span class='page-numbers current'>7</span> <a class='page-numbers' href='http://wordpress31/page/8/'>8</a> <a class='page-numbers' href='http://wordpress31/page/9/'>9</a> <a class='page-numbers' href='http://wordpress31/page/10/'>10</a> <span class='page-numbers dots'>...</span> <a class='page-numbers' href='http://wordpress31/page/27/'>27</a> <a class='next page-numbers' href='http://wordpress31/page/8/'>Следующая »</a> </div>Как видите, присутствуют все необходимые CSS-классы, которые можно использовать для оформления любого элемента навигации (например, текущую страницу, ссылки на предыдущую и следующую страницы).
Проверял данную функцию на версиях WordPress, начиная с 2.3.3, а также тестировал варианты с включенным и отключенным ЧПУ. Все работает, как и полагается.
Пользуйтесь.
* * *
Если вам нужен надежный хостинг и регистрация доменов , то вас ждет крупнейших украинский хостинг-провайдер FREEhost.UA, который готов предложить любой вид хостинга, начиная от виртуального, заканчивая арендой готового сервера.
Сегодня | Завтра | ||
USD | 32.62 | 32.50 |
![]() |
EUR | 39.90 | 39.92 |
![]() |
Обменник | Переходов |
![]() |
6 |
![]() |
5 |
![]() |
4 |
![]() |
3 |
![]() |
3 |
Вы можете получить WMR-бонус в размере 0,01-0,10 WMR на свой кошелек 1 раз в сутки | |
Кошелек
|
|
Код
|
|
Обмен Webmoney |