Бесплатные CMS > SEO оптимизация WordPress > WP page navi

Постраничная навигация WordPress

Копаясь не в Кодексе Вордпресса, а напрямую в его файлах, можно найти гораздо больше интересного и местами полезного. Или бесполезного, вроде вспомогательной функции the_weekday(), которая показывает текущий день недели.

В некоторых темах пригодится, например, get_calendar(), который, натурально, отображает табличку дат за текущий месяц. Ссылки при этом ведут на конкретные страницы в архиве ВП, что хорошо для больших новостных блогов, с предпочтением навигации по дате.

В этом случае поможет также то, что движок, оказывается, умеет генерить фиды для отдельных категорий get_category_feed_link() и тегов get_tag_feed_link() — в качестве аргумента берет id категории/тега. Или get_author_feed_link() с аргументом $author_id для подписки на RSS конкретного автора, если ведут блог несколько. Вы удивитесь, но есть RSS даже для поиска — get_search_feed_link(), аргумент — строка поискового запроса.

И все это можно использовать для линка автоматической подписки и кнопки в соответствующих разделах. Ведь часто раздражает, что невозможно подписаться на отдельную интересующую ленту и не получать всего остального мусора.

Функция paginate_navi() просто выводит циферки со ссылками по определенному формату. Нам же надо заставить ее выводить полноценную пагинацию (кусок вставляется в вывод index.php, tag.php, category.php, archive.php, search.php):

<div id="navigation">
<?php
$paged = intval(get_query_var('paged'));
if(empty($paged) || $paged == 0) $paged = 1;
$plink = get_pagenum_link(777);
$plink = preg_replace("#".get_bloginfo('url')."(.+)777#","\\1%#%",$plink);

echo paginate_links( array(
	"base" => get_bloginfo('url')."%_%",
	"format" => $plink,
	"total" => $wp_query->max_num_pages,
	"current" => $paged,

	"type" => "plain",
	"show_all" => false,

	"end_size" => 1,
	"mid_size" => 6,
	"prev_next" => true,
	"prev_text" => "&larr; предыдущие",
	"next_text" => "следующие &rarr;",
));
?>
</div>

В аргументах она принимает параметры. Можно, конечно, передавать и строкой, но массивом — удобнее.

Первый блок — инициация скрипта, их менять не надо. Мы соответственно, задаем базу (ссылка на сам блог), формат ссылок на страницы (берем из get_pagenumlink, чтобы не зависеть от выбранного ЧПУ — автоматически будет подставляться ?page=N, /page/N или /page/N/). Это будет работать для любой страницы — что главной, что ленты категорий. Также здесь полное количество страниц и текущая страница — берем их из базы.

Остальные параметры настраиваемые.

Скрипт на автомате оборачивает все в ссылки с нужными классами. Код получается примерно такой (оставлены только уникальные строчки):

<div id="navigation">
<span class='page-numbers current'>1</span>
<a class='page-numbers' href='http://localhost/blog/page/2/'>2</a>
<span class='page-numbers dots'>...</span>
<a class='page-numbers' href='http://localhost/blog/page/14/'>14</a>
<a class='next page-numbers' href='http://localhost/blog/page/2/'>следующие →</a>
</div>

Как можно видеть, код довольно избыточный, но зато в CSS настраивается все — определите класс .navigation для всего блока, .page-numbers для элементов пагинации, .dots — для многоточия и .current для текущей.

Самое простое так (возможно, не хватает font-size):

#navigation {
	display:block;
	text-align:center
}
#navigation .page-numbers {
	text-decoration:none;
}
#navigation .prev, #navigation .next, #navigation .current {
	font-weight:bold;
}

Или как в самом WP PageNavi, с квадратиками и прочим (и, естественно, оптимизированный вариант, а не то говно, простите за мой испанский, что нам подсовывают в самом плагине):

#navigation .page-numbers {
	padding: 2px 4px;
	margin: 2px;
	border: 1px solid #06c;
	color: #06c;
	background-color: #FFF;
}
#navigation a{
	text-decoration: none;
}
#navigation a:hover {
	border: 1px solid #000;
	color: #000;
}
#navigation .current {
	border: 1px solid #000;
	font-weight: bold;
	color: #000;
}
#navigation .dots {
	border: 1px solid #999;
	color: #999;
}

Последние CSS-правила легко можно адаптировать.


Меню сайта

Постраничная навигация WordPress
Постраничная навигация WordPress