23 марта 2009

Делаем постраничную навигацию

На данную статью меня натолкнули рассуждения Graf-а об излишней навороченности некоторых плагинов для WordPress. Полностью согласившись с автором в безмысленности громоздких WP Page Numbers или Page Navi, я решил реализовать собственную постраничную навигацию.

Что должна предоставлять посетителю постраничная навигация? Во-первых, это номера страниц, на которые он захочет перейти (1,2,3 и так далее). Во-вторых, обеспечить переходы на следующую и предыдущую страницу. В третьих, быстрый переход на первую и последнюю страницу сайта.

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


<strong>
<?php posts_nav_link(' &amp;amp;amp;#8212; ', __('← предыдущая страница'), __('следующая страница→')); ?>
</strong><br />
<?php $max_page = $wp_query->max_num_pages;
$nump=5;
if($max_page!=1){
$paged = intval(get_query_var('paged'));
if(empty($paged) || $paged == 0) $paged = 1;
if($paged!=1) echo '<a href="'.get_pagenum_link(1).'">&laquo; Первая</a> ';
if($paged-$nump>1) $start=$paged-$nump; else $start=1;
if($paged+$nump<$max_page) $end=$paged+$nump; else $end=$max_page-1;
if($start>2) echo "... ";
for ($i=$start;$i<=$end+1;$i++)
{
if($paged!=$i) echo '<a href="'.get_pagenum_link($i).'">'.$i.'</a> ';
else echo '<span class="current">'.$i.'</span> ';
}
if($end<$max_page-1) echo "... ";
if($paged!=$max_page) echo '<a href="'.get_pagenum_link($max_page).'">Последняя &raquo;</a>';
}
?>

Popularity: 44%

Рубрика: wordpress, Рекомендую
Метки: , ,
Рекомендую обратить внимание:
Новости, похожие на "Делаем постраничную навигацию":

Новый шаблон
Лето - не знаю как вам, а мне летом постоянно хочется чего-то очень легкого... В том числе и [...]
Кросспостинг
Спустя довольно много временя, в очередной раз забегаю на пару минут в админку этого блога. Основная задача - [...]
Oригинальный шаблон marmoset.ru
Оригинальный шаблон для WordPress, созданный для сайта marmoset.ru. Думаю что имею полное право называть его оригинальным, поскольку в [...]
Выбор CMS на текстовых файлах
- Подскажите самую лучшую cms! - Для чего она будет использоваться? - Для сайта!! В качестве эпитета приведен пример диалога, которые [...]
9 комментариев »

  • Павел пишет:

    Спасибо. Работает.
    Только в коде аперсанды автозаменились “&amp;amp;raquo;” нв спецсимолы…

  • Сергей пишет:

    Спасибо.

    Работает.

    Только вот эта строка:

    отображается вот так:
    ← предыдущая страница &amp;#8212; следующая страница→

    немного изменив:

    стало отображаться так:
    ← предыдущая страница — следующая страница→

  • KinoMan пишет:

    Спасибо, слегка облегчил, и получилось тупо выводит все страницы, для СЕО хорошо, все страницы становятся второго уровня

  • Will пишет:

    Добрый день! А куда этот код нужно добавить?

    • t3s пишет:

      туда где хочется видеть пагинацию - кому-то нравится внизу страницы, кому-то вверху, а кому-то и вверху и внизу
      что касается файлов - обычно это index.php, но в некоторых щаблонах может быть category.php или archive.php - т.е. зависит от шаблона

9 комментариев


RSS feed for comments on this post.

Leave a comment