Оптимизация pagenavi
Понедельник, ноября 3, 2008
Прочитав пост уважаемого Жомарта (после увидев статью Ярослава Бирзул) и посмотрев функционал navi.php, решил внести свои 5ть копеек.
В итоге взял функцию пагинации из темы уважаемого www.acosmin.com и чуток доработал.
Получилось вот что:
global $paged, $wp_query;
$pages_to_show = 5; //сколько ссылок делать по сторонам
$max_page = $wp_query->max_num_pages;
if($max_page>1){
if(empty($paged)) {
$paged = 1;
}
$prelabel = '<strong>&laquo;</strong>';
$nxtlabel = '<strong>&raquo;</strong>';
$half_pages_to_show = round($pages_to_show/2); if($max_page > 1) {
echo "$before <div class='Nav'><span>Стр. ($max_page): </span>";
if ($paged >= ($pages_to_show-1)) {
echo '<a href="'.get_pagenum_link().'">&laquo; Первая</a> ... ';
}
previous_posts_link($prelabel);
for($i = $paged — $half_pages_to_show; $i <= $paged + $half_pages_to_show; $i++) {
if ($i >= 1 && $i <= $max_page) {
if($i == $paged) {
echo "<strong class='on'>$i</strong>";
} else {
echo ' <a href="'.get_pagenum_link($i).'">'.$i.'</a> ';
}
}
}
next_posts_link($nxtlabel, $max_page);
if (($paged+$half_pages_to_show) < ($max_page)) {
echo ' ... <a href="'.get_pagenum_link($max_page).'">Последняя &raquo;</a>';
}
echo "<div class='NavEnd'></div></div> $after";
}
}
}
Вызывается оно просто:
Кода не намного больше, но есть некоторые полезные детали.
Отличия от navi.php: возможность перемещения на пред. и след. страницу.