脱离插件,实现WordPress主题分页功能

知更鸟
知更鸟
知更鸟
站长
2584
文章
0
粉丝
WordPress12561,052阅读模式

越少的使用插件,却能让使用者完全体验到主题的各项功能,才是真正好的主题,这也是所有主题设计者应考虑的问题,本站目前的新主题基本实现了零插件。网上不使用插件实现WordPress功能的文章也很多,之前我也写过WordPress相关日志函数一文,今天再补一个不使用插件实现翻页功能的函数代码。

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

虽然网上有如何把wp-pagenavi插件集成到WordPress主题的教程,但wp-pagenavi插件函数代码拖沓,只是变相启用插件而已,并没有真正脱离wp-pagenavi插件。下面一段轻量级的函数,加上寥寥数行css样式就可以完全替代分页插件了。

具体实现方法:

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

  1. function 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 pagination($query_string); ?>  

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

  1. .pagination{   
  2. line-height:23px;   
  3. }   
  4. .pagination span, .pagination a{   
  5. font-size:12px;   
  6. margin2px 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. }  

上面的样式是我目前用的主题样式,根据不同的主题修改一下边框与背景,基本就可以了,之后删除分页插件。

本站文章大部分为原创,用于个人学习记录,可能对您有所帮助,仅供参考!

weinxin
我的微信
微信号已复制
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
 
评论  125  访客  98  作者  14
    • Jinwen
      Jinwen

      很好的教程呢,谢谢分享的。

      • 小O
        小O

        主题真漂亮。

        • Elanse
          Elanse

          请问版主 THEME 中的 Quarx 首页的大幻灯片如何添加自定义代码 我的老显示不出来 添加Image

            • 知更鸟
              知更鸟

              @ Elanse 主题站上说明没看懂?主题包中有添加缩略图的说明,英文如果和我一样差,看图片说明就够了,另外如果你用的空间是WIN主机,就放弃使用这款主题吧

                • 客官
                  客官

                  @ 知更鸟 为什么添加后, 上一页下一页 最后 最前 是乱码啊。

                    • 知更鸟
                      知更鸟

                      @ 客官 是编码错误,中文模版为UTF-8,无BOM

                        • 轻舞飞扬
                          轻舞飞扬

                          @ 知更鸟 你好 我想问下 为什么我用这代码 上一页 下一页 尾页 首页 这部分都显示不出来

                            • liu
                              liu

                              @ 轻舞飞扬 你的显示出来了吗

                            • 轻舞飞扬
                              轻舞飞扬

                              @ 知更鸟 那鸟哥 在请问一下 我直接把你的代码放在functions.php 这个页面中的 请问怎么设置 编码 和无BOM呢? 谢谢

                        • 伊星晴
                          伊星晴

                          @ Elanse 这个能够在自定义模板中使用吗?我试了下,页数和链接都能出现,但是点击上一页和下一页时页面没有变化,并没有跳转到相应的页面去。。。。这是怎么回事呢

                            • 大拇指
                              大拇指

                              @ 伊星晴 我也是同样的问题

                          • 8路杂讯
                            8路杂讯

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

                            这段代码在哪个文件里啊?

                              • 知更鸟
                                知更鸟

                                @ 8路杂讯 一般在archive.php index.php文件中,
                                比如WP默认模板是:

                                  • 8路杂讯
                                    8路杂讯

                                    @ 知更鸟 谢谢 找到了 我的代码是

                                      • 8路杂讯
                                        8路杂讯

                                        @ 8路杂讯 汗 原来我输入不了代码

                                  • leesum
                                    leesum

                                    这方法不错,一会去折腾下

                                    • Skyoy
                                      Skyoy

                                      $range = 2; 我改成5之后,在category分类里面,选择最后一页,是没有内容的,甚至选择倒数的几页,也是空白的哦。。请问怎么修改呢? 谢谢

                                        • Skyoy
                                          Skyoy

                                          @ Skyoy 额 原来是判定的数值问题哦。因为我在archive.php下面是8篇,在后台阅读的是6篇。可上门的函数只调用后台默认的。

                                            • cutebt
                                              cutebt

                                              @ Skyoy 用得很好。。谢谢。。

                                          • pazz7ven
                                            pazz7ven

                                            这样做会不会拖慢速度?刚从引擎上点你的文章一直显示 在加载中

                                              • 知更鸟
                                                知更鸟

                                                @ pazz7ven 对我用的主题来说,没有加载任何多余的东西,所以不会影响速度

                                              • charger
                                                charger

                                                如果单日志实现分页..怎么弄呢..请教一下..

                                                  • 知更鸟
                                                    知更鸟

                                                    @ charger 又是同一个问题,编辑文章时切换到代码模式,在分页处加{!–nextpage–} ,把{}换成

                                                      • charger
                                                        charger

                                                        @ 知更鸟 额.大哥..那如果我没采用你的方法..还是用插件.能不能插入nextpage标签?我试了好像不行..有没其他办法?

                                                          • 知更鸟
                                                            知更鸟

                                                            @ charger 没听说日志分页还有插件,主题不支持分页插入标签也没用

                                                      • 亿品元素
                                                        亿品元素

                                                        插件是越少越好啊!

                                                        • 百奥博
                                                          百奥博

                                                          wp折腾去掉plugin,其乐无穷

                                                          • unnamed
                                                            unnamed

                                                            我用这个主题做了个博客,为何没有分页呢?
                                                            我的函数是function pagination($query_string)
                                                            在index.php这个文件中的调用是:

                                                            为何没有效果呢?

                                                            • poco
                                                              poco

                                                              这个如果在单独的页面加入貌似不显示分页

                                                              尝试了好几次都没用

                                                              • 百佳资讯
                                                                百佳资讯

                                                                很好的方法呢,先收藏了

                                                                • 土野鲜
                                                                  土野鲜

                                                                  收藏

                                                                  • .安小轩
                                                                    .安小轩

                                                                    这个要放在哪里吖?

                                                                    • 老衲
                                                                      老衲

                                                                      用了下 效果很好

                                                                      • citier
                                                                        citier

                                                                        这个刚好看过,百度又进来啦,看样子不用百度了,直接在鸟哥站里搜就的了

                                                                        • wzj890711
                                                                          wzj890711

                                                                          博主好,最近更新了你的HotNews pro2.5主题,貌似2.5的主题已经集成了这篇文章里的分页代码,但是代码显示的效果不是很好,只能显示前几页的页码(1~7),超过7的页码都要点击“下一页”才能看到,而且最大页码也不显示再首页上,看着不是很舒服。

                                                                          之前使用2.4没有这个问题,那是我还是用得wp-pagenavi分页导航插件,但是更新2.5后插件启用没反应,而且我发现你的博客分页导航和这篇文章的代码不一样啊,想问一下现在怎么在2.5的主题里去掉你这个翻页的效果还原成原来的?上面说替换的代码没有找到额。。。

                                                                            • wzj890711
                                                                              wzj890711

                                                                              @ wzj890711 现在我把“$range = 20; // 修改数字,可以显示更多的分页链”改成了20页现在可以显示全部页数了,但是翻页插件还是用不了,求帮助~~~

                                                                            • ryan
                                                                              ryan

                                                                              if(emptyempty($paged))$paged = 1; 博主的这行代码,貌似只要一个empty的函数吧

                                                                              • 广州seo
                                                                                广州seo

                                                                                代码不错,拿来用了。。不过第5行写错了。。。

                                                                                if(emptyempty($paged))$paged = 1;

                                                                                应该是

                                                                                if(empty($paged))$paged = 1;

                                                                                • Poor
                                                                                  Poor

                                                                                  请教个问题。 我弄的分页点击页码以后上面的URL看到的是已经转过去了。 但是页面的内容还是第一页的。 也就是说始终显示第一页的内容? 这个怎么解决? 望指教。

                                                                                  • Poor
                                                                                    Poor

                                                                                    用你的这个代码页是一样。

                                                                                    • toptpe
                                                                                      toptpe

                                                                                      请问代码添加在style。css的哪个位置啊?我是超级菜鸟啊!

                                                                                        • 知更鸟
                                                                                          知更鸟

                                                                                          @ toptpe 加到最后

                                                                                            • toptpe
                                                                                              toptpe

                                                                                              @ 知更鸟 呵呵,感谢的五体投地,以后在CSS,我都知道加到最后了啊

                                                                                          • toptpe
                                                                                            toptpe

                                                                                            直接复制代码,前面怎么还带着123456789等数字呢

                                                                                              • 知更鸟
                                                                                                知更鸟

                                                                                                @ toptpe 换用其它非IE核心浏览器复制

                                                                                                  • toptpe
                                                                                                    toptpe

                                                                                                    @ 知更鸟 呵呵,确实是这样的!

                                                                                                • toptpe
                                                                                                  toptpe

                                                                                                  1.function kriesi_pagination($query_string){
                                                                                                  这段代码放在FUNCTION.PHP的哪个位置啊?原谅我是超级菜鸟啊

                                                                                                    • 知更鸟
                                                                                                      知更鸟

                                                                                                      @ toptpe 加到functions中最后一个“?>”上面

                                                                                                        • toptpe
                                                                                                          toptpe

                                                                                                          @ 知更鸟 感谢鸟哥仔细的解答,搞定了!

                                                                                                      • 25lw
                                                                                                        25lw

                                                                                                        老大我的按照您的方法加上了
                                                                                                        但是翻页好像不能用
                                                                                                        只能实现翻页一次
                                                                                                        第二次就无法翻页了,一直停留在第一次翻页后的页面
                                                                                                        求解答啊
                                                                                                        或者方法发到我邮箱
                                                                                                        在此表示感谢了……

                                                                                                        • 猪猪侠
                                                                                                          猪猪侠

                                                                                                          鸟哥,能不能实现 分页标题 呀! 这样对优化好点呀!

                                                                                                          • kay
                                                                                                            kay

                                                                                                            这个方法很不错

                                                                                                            • lemon
                                                                                                              lemon

                                                                                                              鸟哥,我的代码是这样该替换哪里啊?
                                                                                                              max_num_pages;
                                                                                                              if ( $total_pages > 1 ) {
                                                                                                              echo ”;
                                                                                                              posts_nav_link(‘ | ‘, __(‘« Previous page’,’zbench’), __(‘Next page »’,’zbench’));
                                                                                                              echo ”;
                                                                                                              }
                                                                                                              }
                                                                                                              ?>

                                                                                                              • 童佳倩
                                                                                                                童佳倩

                                                                                                                发现原来鸟哥是如此的历害角色,直接拿来用,稍改了下CSS颜色就OK了,

                                                                                                                  • 知更鸟
                                                                                                                    知更鸟

                                                                                                                    @ 童佳倩 你在哪看过一样的代码?

                                                                                                                      • 童佳倩
                                                                                                                        童佳倩

                                                                                                                        @ 知更鸟 鸟哥,误会误会~~真不好意思啦,我没有表达清楚,其实我是说我直接把你的代码拿来用了,不是说你拿别人的,,,,,,,抱歉啦!

                                                                                                                    • andychow1989
                                                                                                                      andychow1989

                                                                                                                      从您这儿学到了不少呢 加油 继续支持

                                                                                                                      • WILDHORDE
                                                                                                                        WILDHORDE

                                                                                                                        经过仔细研究和不断尝试。终于成功分页了。感谢楼主的代码。回头修改CSS

                                                                                                                        • 多特
                                                                                                                          多特

                                                                                                                          问个问题啊,用的这个分页代码,原来首页是8篇文章每页,总页数是21,后来我改到每页12篇了,总页数还是21,后面几页全是空的,然后写几篇文章增加了一页后,总页数变成22,后边4页还是空的,这个问题怎么解决啊

                                                                                                                          • 衣@佳人
                                                                                                                            衣@佳人

                                                                                                                            我也来试试

                                                                                                                            • 美胸秀身社
                                                                                                                              美胸秀身社

                                                                                                                              学习了 感谢博主的分享

                                                                                                                              • 同爱99
                                                                                                                                同爱99

                                                                                                                                现在这代码还能用吗?

                                                                                                                                • 九级木匠
                                                                                                                                  九级木匠

                                                                                                                                  你好,我用这段代码了,可是,连标签页面,page页面显示分页有问题。比如首页文章比较多,显示的两页,没问题,但是标签页面也是显示两个页面,第二页就是404。怎么解决,谢谢啊

                                                                                                                                  • 轻舞飞扬
                                                                                                                                    轻舞飞扬

                                                                                                                                    鸟哥 你好 我想问下 为什么我用这代码 上一页 下一页 尾页 首页 这部分都显示不出来 其它都正常

                                                                                                                                    • 黑米粥
                                                                                                                                      黑米粥

                                                                                                                                      过来学习一下了

                                                                                                                                      • 爱罅
                                                                                                                                        爱罅

                                                                                                                                        我使用了这个方法,但是一用,页面就窜了

                                                                                                                                      匿名

                                                                                                                                      发表评论

                                                                                                                                      匿名网友

                                                                                                                                      拖动滑块以完成验证