Очень немаловажный компонент современных веб-сайтов — это пагинация. Когда контента накопилось уже достаточно много, то приходится разбивать его на страницы. Это, во-первых, удобно, во-вторых — не загружает сайт, т.к. прогрузка 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,
теперь проблема решена)
Благодарю, очень рад что информация оказалась полезной.