Home » WP使用, 进阶使用 » 主题制作小技巧之五:非插件显示页面导航

主题制作小技巧之五:非插件显示页面导航

大家都知道wordpress的分页默认的都是为“Next Page”、“Previous Page”方式,当然如果你要实现其他的显示方式如 “pages:1/10 1 2 3 4 …”的话,那大家自然的当然是想到大名鼎鼎的WP-PageNavi插件了!当然不用插件也能实现这样的现实方式!
1.打开你主题模板的functions.php,在<?php ?>里面添加以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php  function wp_pagenavi($before = '', $after = '', $prelabel = '', $nxtlabel = '', $pages_to_show = 5, $always_show = false) {
 global $request, $posts_per_page, $wpdb, $paged;
 if(empty($prelabel)) {   $prelabel = '<strong>&laquo;</strong>';
 } if(empty($nxtlabel)) {
 $nxtlabel = '<strong>&raquo;</strong>';
 } $half_pages_to_show = round($pages_to_show/2);
 if (!is_single()) {
 if(!is_category()) {
 preg_match('#FROM\s(.*)\sORDER BY#siU', $request, $matches);  } else {
 preg_match('#FROM\s(.*)\sGROUP BY#siU', $request, $matches);  }
 $fromwhere = $matches[1];
 $numposts = $wpdb->get_var("SELECT COUNT(DISTINCT ID) FROM $fromwhere");
 $max_page = ceil($numposts /$posts_per_page);
 if(empty($paged)) {
 $paged = 1;
 }
 if($max_page > 1 || $always_show) {
 echo "$before <div class='Nav'><span>Pages ($max_page): </span>";   if ($paged >= ($pages_to_show-1)) {
 echo '<a href="'.get_pagenum_link().'">&laquo; First</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).'">Last &raquo;</a>';   }
 echo "</div> $after";
 }
 }
}
?>

如果你不想和WP-PageNavi插件有冲突,可以修改上面的函数名 wp_pagenavi
打开你主题模板的index.php、category.php、archive.php或循环页,找到:

1
2
<?php next_posts_link(__( 'Previous page' )) ?>
<?php previous_posts_link(__( 'Next page' )) ?>

注意:不同的主题有可能不同,找到函数next_posts_link、 previous_posts_link也行!
然后替换成下面的内容:

1
2
3
4
5
6
 <?php if(function_exists('wp_pagenavi')) : ?>
<?php wp_pagenavi() ?>
	<?php else : ?>
<?php previous_posts_link(__('Previous page')); ?>
<?php next_posts_link(__('Next page')); ?>
	<?php endif; ?>

如果你修改了函数名wp_pagenavi,那这个当然也要和你修改的一样啊!

Leave a comment