Очень немаловажный компонент современных веб-сайтов - это пагинация. Когда контента накопилось уже достаточно много, то приходится разбивать его на страницы. Это, во-первых, удобно, во-вторых - не загружает сайт, т.к. прогрузка 100 статей на одну страницу даст о себе знать, какой бы мощный сервер не был.
В WordPress есть встроенная пагинация, но она неудобная, точней - довольно слабо функциональная.
Разработчики WordPress, видно, долго не думали когда создавали навигационную структуру в своем движке, ибо 2 кнопки "предыдущая страница" и "следующая страница", как бы даже сложно назвать навигацией... А если пользователь находясь на 342 странице хочет перейти на 334, при этом не в обход 8-ми страниц, а одним кликом? Собственно, не думаю что необходимо рассказывать о недостатках встроенной пагинации.
Многие лечат это дело плагинами, но я против плагинов в принципе. Считаю что таких элементарных вещей можно добиться и не давая на сайт лишнюю нагрузку, у WordPress, как известно, и без этого хватает проблем. Итак...
Для начала создадим файл, отвечающий за нашу навигацию, назовем его navi.php , к примеру. Далее откроем его и запишем следующее:
<?php global $wp_query; $max_page = $wp_query->max_num_pages; $nump=10; if($max_page>1){ $paged = intval(get_query_var('paged')); if(empty($paged) || $paged == 0) $paged = 1; echo '<div id="navi">'; echo '['.$paged.'-ая страница из '.$max_page.']'; if($paged!=1) echo '<a href="'.get_pagenum_link(1).'" title="Перейти в начало">«Первая</a>'; else echo 'Первая страница'; if($paged-$nump>1) $start=$paged-$nump; else $start=2; if($paged+$nump<$max_page) $end=$paged+$nump; else $end=$max_page-1; if($start>2) echo "↔"; for ($i=$start;$i<=$end;$i++) { if($paged!=$i) echo '<a href="'.get_pagenum_link($i).'" title="Перейти на '.$i.'-ю страницу из '.$max_page.'">'.$i.'</a>'; else echo '<b> '.$i.' </b>'; } if($end<$max_page-1) echo "↔"; if($paged!=$max_page) echo '<a href="'.get_pagenum_link($max_page).'" title="Перейти на последнюю страницу">Последняя»</a> '; else echo 'Последняя страница'; echo '</div>' ; } ?>
Как видно, код довольно маленький по сравнению со своими "братьями" чуть ли не до мегабайта... Из на страиваемого в скрипте в основном только количество отображаемых страниц слева\справа от текущей. Это строка 3, $nump=10; , где "10" количество этих самых страниц. Ставим там какую угодно цифру и редактируем русский текст как хочется.
Подключается файл в шаблон стандартно:
<?php include_once 'navi.php'; ?>
Втыкаем в любом месте шаблона и смотрим что получилось. А получилось то, что все ссылки без стилей и выглядят некрасиво. Это лечится. Открываем свой style.css и пишем какие угодно стили для этих названий:
#navi{} #navi a{} #navi a:hover{}
Собственно, все. Код лаконичный, поддерживает все что надо и отвечает требованиям.
Спасибо огромное!!! У меня стоял плагин Pagebar2 Из-за которого отваливалась такая полезная штука, как Tinymce Advanced,
теперь проблема решена)
Благодарю, очень рад что информация оказалась полезной. :)
Спасибо. *ok* Только учусь делать шаблоны на ВП и сразу затревожило *dash* что нету нормальной пагинации. :-)