代码实现WordPress主题分页功能

林继 WordPress 2,724 共写了393个字 (2011-06-09 18:50:06) 没有评论 打印 扫描二维码 百度已收录

越少使用插件,却能让使用者完全体验到主题的各项功能,才是真正好的主题,这也是所有主题设计者应考虑的问题,本站目前的新主题基本实现了零插件。

WordPress默认翻页功能很弱,一页页翻,弄到你手麻,所以类似wp-pagenavi翻 页插件,几乎是WordPress博客必装的插件,也是普及率很高的一款插件。

下面一段轻量级的函数,加上寥寥数行CSS样式就可以完全替代分页插件了。

具体实现方法:

首先将下面一段函数代码添加到主题的functions.php模板文件中:

  1. function donliang_pagination($query_string){
  2. global $posts_per_page, $paged;
  3. $my_query = new WP_Query($query_string ."&posts_per_page=-1");
  4. $total_posts = $my_query->post_count;
  5. if(empty($paged))$paged = 1;
  6. $prev = $paged - 1;
  7. $next = $paged + 1;
  8. $range = 2; // only edit this if you want to show more page-links
  9. $showitems = ($range * 2)+1;
  10.  
  11. $pages = ceil($total_posts/$posts_per_page);
  12. if(1 != $pages){
  13. echo "<div class='pagination'>";
  14. echo ($paged > 2 && $paged+$range+1 > $pages && $showitems < $pages)? "<a href='".get_pagenum_link(1)."'>最前</a>":"";
  15. echo ($paged > 1 && $showitems < $pages)? "<a href='".get_pagenum_link($prev)."'>上一页</a>":"";
  16.  
  17. for ($i=1; $i <= $pages; $i++){
  18. if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )){
  19. echo ($paged == $i)? "<span class='current'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a>";
  20. }
  21. }
  22.  
  23. echo ($paged < $pages && $showitems < $pages) ? "<a href='".get_pagenum_link($next)."'>下一页</a>" :"";
  24. echo ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) ? "<a href='".get_pagenum_link($pages)."'>最后</a>":"";
  25. echo "</div>\n";
  26. }
  27. }


接下来用下面的代码替换原来模板中默认翻页代码或分页插件代码:

  1. <?php donliang_pagination($query_string); ?>

最后再把下面的样式代码添加到style.css中,刷新一下页面,与使用插件实现的翻页效果一样。

  1. .pagination{
  2.   line-height:23px;
  3. }
  4. .pagination span, .pagination a{
  5.   font-size:12px;
  6.   margin: 2px 6px 2px 0;
  7.   background:#fff;
  8.   border:1px solid #e5e5e5;
  9.   color:#787878;
  10.   padding:2px 5px 2px 5px;
  11.   text-decoration:none;
  12. }
  13. .pagination a:hover{
  14.   background: #8391A7;
  15.   border:1px solid #fff;
  16.   color:#fff;
  17. }
  18. .pagination .current{
  19.   background: #fff;
  20.   border:1px solid #8d8d8d;
  21.   color:#393939;
  22.   font-size:12px;
  23.   padding:2px 5px 2px 5px;
  24. }

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

< >