大家都知道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>«</strong>'; } if(empty($nxtlabel)) { $nxtlabel = '<strong>»</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().'">« 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 »</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,那这个当然也要和你修改的一样啊!

