Как сделать постраничную навигацию без плагинов

Если вы посмотрите в этом блоге на главной странице вниз, то увидите там постраничную навигацию — любимый навигационный элемент многих блоггеров.

Постраничная навигация удобна тем, что дает примерное представление об общем объеме блога, и позволяет быстро перемещаться по страницам, снабжая такое перемещение удобной индикацией. Есть множество плагинов, которые создают постраничную навигацию: Pagebar, jQuery Paginator, WP Page Number, WP-PageNavi и другие. Если вы решили все же уменьшить количество плагинов, то для организации постраничной навигации можно и вовсе обойтись без них. Давайте создадим постраничную навигацию своими руками.

Как и в случае создания «хлебных крошек» без плагинов, будем работать с отдельным файлом. Создайте пустой текстовый файл, и назовите его pagenavi.php. Вставьте в него такой код:

<?php
global $wp_query;
$max_page = $wp_query->max_num_pages;
$nump=2;  /*Количество отображаемых подряд номеров страниц*/

if($max_page>1){
	$paged = intval(get_query_var('paged'));
	if(empty($paged) || $paged == 0) $paged = 1;

	echo '<div class="pagenavi">';
/*	echo 'Страница '.$paged.' из '.$max_page.'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';*/
	if($paged!=1) echo '<a href="'.get_pagenum_link(1).'">1</a>&nbsp;';
		else echo '<u>1</u>';

	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 "<b>...</b>";

	for ($i=$start;$i<=$end;$i++)
	 {
	 if($paged!=$i) echo '<a href="'.get_pagenum_link($i).'">'.$i.'</a> ';
		else echo '<u>'.$i.'</u>';
	 }

	if($end<$max_page-1) echo "<b>...</b>";

	if($paged!=$max_page) echo '<a href="'.get_pagenum_link($max_page).'"> Последняя &raquo;</a>';
		else echo '<b>&nbsp;Последняя</b> ';

	echo '</div>'	;
	}
?>

Теперь внедрим этот файл в тему. Перепишите этот файл в папку с вашей темой. Постраничная навигация нужна там, где выводится множество постов — на главной странице, а результатах поиска и в архивах. Значит нам нужно вставить ее в index.php, search.php и archive.php. Откройте файл index.php и найдите вывод навигации по страницам. Обычно он выглядит примерно так:

<?php previous_posts_link('Предыдущая страница') ?>
<?php next_posts_link(' Следующая страница') ?>

Можете оставить ее, но лучше ее удалить, так как такая навигация больше не понадобится, и вместо нее вставить такой код:

<div class="navigation">
    <?php include(TEMPLATEPATH."/pagenavi.php"); ?>
</div>

В остальные страницы код вставляется по аналогии. Постраничная навигация имеет свое оформление, которое нужно добавить в файл style.css:

.navigation {clear:both; width:500px; height:auto;text-align:center;margin:30px 0 30px 50px;padding-top:15px;}
.navigation .right, .navigation .left {width:230px; font-size:18px;text-align:right;margin:0;}
.navigation .left {text-align:left;}
.navigation a, .navigation a:visited {text-decoration:none;color:#939186;}
.navigation a:hover {color:#5D5643;text-decoration:none;}
.pagenavi {clear:both;display:block;font-size:14px;margin:0;padding:7px 0 7px 0;}
.pagenavi a {clear: both;width:auto;font-size:14px;padding:3px 7px 3px 7px;background-color:#F3EFE6;}
.pagenavi b {clear:both;width:auto;margin:0 6px 0 5px;text-decoration:none;}

Все, постраничная навигация без плагинов готова — можете пользоваться!