越少的使用插件,却能让使用者完全体验到主题的各项功能,才是真正好的主题,这也是所有主题设计者应考虑的问题,本站目前的新主题基本实现了零插件。网上不使用插件实现WordPress功能的文章也很多,之前我也写过WordPress相关日志函数一文,今天再补一个不使用插件实现翻页功能的函数代码。
WordPress默认翻页功能很弱,一页页翻,弄到你手麻,所以类似wp-pagenavi翻页插件,几乎是WordPress博客必装的插件,也是普及率很高的一款插件。
虽然网上有如何把wp-pagenavi插件集成到WordPress主题的教程,但wp-pagenavi插件函数代码拖沓,只是变相启用插件而已,并没有真正脱离wp-pagenavi插件。下面一段轻量级的函数,加上寥寥数行css样式就可以完全替代分页插件了。
具体实现方法:
首先将下面一段函数代码添加到主题的functions.php模板文件中:
- function pagination($query_string){
- global $posts_per_page, $paged;
- $my_query = new WP_Query($query_string ."&posts_per_page=-1");
- $total_posts = $my_query->post_count;
- if(empty($paged))$paged = 1;
- $prev = $paged - 1;
- $next = $paged + 1;
- $range = 2; // only edit this if you want to show more page-links
- $showitems = ($range * 2)+1;
- $pages = ceil($total_posts/$posts_per_page);
- if(1 != $pages){
- echo "<div class='pagination'>";
- echo ($paged > 2 && $paged+$range+1 > $pages && $showitems < $pages)? "<a href='".get_pagenum_link(1)."'>最前</a>":"";
- echo ($paged > 1 && $showitems < $pages)? "<a href='".get_pagenum_link($prev)."'>上一页</a>":"";
- for ($i=1; $i <= $pages; $i++){
- if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )){
- echo ($paged == $i)? "<span class='current'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a>";
- }
- }
- echo ($paged < $pages && $showitems < $pages) ? "<a href='".get_pagenum_link($next)."'>下一页</a>" :"";
- echo ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) ? "<a href='".get_pagenum_link($pages)."'>最后</a>":"";
- echo "</div>\n";
- }
- }
接下来用下面的代码替换原来模板中默认翻页代码或分页插件代码:
- <?php pagination($query_string); ?>
最后再把下面的样式代码添加到style.css中,刷新一下页面,与使用插件实现的翻页效果一样。
- .pagination{
- line-height:23px;
- }
- .pagination span, .pagination a{
- font-size:12px;
- margin: 2px 6px 2px 0;
- background:#fff;
- border:1px solid #e5e5e5;
- color:#787878;
- padding:2px 5px 2px 5px;
- text-decoration:none;
- }
- .pagination a:hover{
- background: #8391A7;
- border:1px solid #fff;
- color:#fff;
- }
- .pagination .current{
- background: #fff;
- border:1px solid #8d8d8d;
- color:#393939;
- font-size:12px;
- padding:2px 5px 2px 5px;
- }
上面的样式是我目前用的主题样式,根据不同的主题修改一下边框与背景,基本就可以了,之后删除分页插件。
本站文章大部分为原创,用于个人学习记录,可能对您有所帮助,仅供参考!

我的微信
微信号已复制
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!





广东省佛山市顺德区 1F
很好的教程呢,谢谢分享的。
湖北省武汉市 2F
主题真漂亮。
山西省阳泉市 3F
请问版主 THEME 中的 Quarx 首页的大幻灯片如何添加自定义代码 我的老显示不出来 添加Image
B1
@ Elanse 主题站上说明没看懂?主题包中有添加缩略图的说明,英文如果和我一样差,看图片说明就够了,另外如果你用的空间是WIN主机,就放弃使用这款主题吧
浙江省温州市鹿城区 B2
@ 知更鸟 为什么添加后, 上一页下一页 最后 最前 是乱码啊。
B3
@ 客官 是编码错误,中文模版为UTF-8,无BOM
陕西省西安市 B4
@ 知更鸟 你好 我想问下 为什么我用这代码 上一页 下一页 尾页 首页 这部分都显示不出来
北京市 B5
@ 轻舞飞扬 你的显示出来了吗
陕西省西安市 B4
@ 知更鸟 那鸟哥 在请问一下 我直接把你的代码放在functions.php 这个页面中的 请问怎么设置 编码 和无BOM呢? 谢谢
河南省郑州市 B1
@ Elanse 这个能够在自定义模板中使用吗?我试了下,页数和链接都能出现,但是点击上一页和下一页时页面没有变化,并没有跳转到相应的页面去。。。。这是怎么回事呢
广东省深圳市 B2
@ 伊星晴 我也是同样的问题
山东省烟台市龙口市 4F
请问博主:
接下来用下面的代码替换原来模板中默认翻页代码或分页插件代码:
这段代码在哪个文件里啊?
B1
@ 8路杂讯 一般在archive.php index.php文件中,
比如WP默认模板是:
山东省烟台市龙口市 B2
@ 知更鸟 谢谢 找到了 我的代码是
山东省 B3
@ 8路杂讯 汗 原来我输入不了代码
江苏省南京市 5F
这方法不错,一会去折腾下
广东省深圳市 6F
$range = 2; 我改成5之后,在category分类里面,选择最后一页,是没有内容的,甚至选择倒数的几页,也是空白的哦。。请问怎么修改呢? 谢谢
广东省深圳市 B1
@ Skyoy 额 原来是判定的数值问题哦。因为我在archive.php下面是8篇,在后台阅读的是6篇。可上门的函数只调用后台默认的。
福建省莆田市 B2
@ Skyoy 用得很好。。谢谢。。
陕西省西安市 7F
这样做会不会拖慢速度?刚从引擎上点你的文章一直显示 在加载中
B1
@ pazz7ven 对我用的主题来说,没有加载任何多余的东西,所以不会影响速度
广东省广州市增城区 8F
如果单日志实现分页..怎么弄呢..请教一下..
B1
@ charger 又是同一个问题,编辑文章时切换到代码模式,在分页处加{!–nextpage–} ,把{}换成
广东省广州市 B2
@ 知更鸟 额.大哥..那如果我没采用你的方法..还是用插件.能不能插入nextpage标签?我试了好像不行..有没其他办法?
B3
@ charger 没听说日志分页还有插件,主题不支持分页插入标签也没用
广东省广州市 9F
插件是越少越好啊!
河北省邢台市 10F
wp折腾去掉plugin,其乐无穷
山东省济南市 11F
我用这个主题做了个博客,为何没有分页呢?
我的函数是function pagination($query_string)
在index.php这个文件中的调用是:
为何没有效果呢?
云南省大理州大理市 12F
这个如果在单独的页面加入貌似不显示分页
尝试了好几次都没用
陕西省西安市 13F
很好的方法呢,先收藏了
上海市 14F
收藏
北京市 15F
这个要放在哪里吖?
陕西省西安市 16F
用了下 效果很好
安徽省合肥市 17F
这个刚好看过,百度又进来啦,看样子不用百度了,直接在鸟哥站里搜就的了
江苏省南京市 18F
博主好,最近更新了你的HotNews pro2.5主题,貌似2.5的主题已经集成了这篇文章里的分页代码,但是代码显示的效果不是很好,只能显示前几页的页码(1~7),超过7的页码都要点击“下一页”才能看到,而且最大页码也不显示再首页上,看着不是很舒服。
之前使用2.4没有这个问题,那是我还是用得wp-pagenavi分页导航插件,但是更新2.5后插件启用没反应,而且我发现你的博客分页导航和这篇文章的代码不一样啊,想问一下现在怎么在2.5的主题里去掉你这个翻页的效果还原成原来的?上面说替换的代码没有找到额。。。
江苏省南京市 B1
@ wzj890711 现在我把“$range = 20; // 修改数字,可以显示更多的分页链”改成了20页现在可以显示全部页数了,但是翻页插件还是用不了,求帮助~~~
江苏省南京市 19F
if(emptyempty($paged))$paged = 1; 博主的这行代码,貌似只要一个empty的函数吧
广东省惠州市 20F
代码不错,拿来用了。。不过第5行写错了。。。
if(emptyempty($paged))$paged = 1;
应该是
if(empty($paged))$paged = 1;
河南省郑州市 21F
请教个问题。 我弄的分页点击页码以后上面的URL看到的是已经转过去了。 但是页面的内容还是第一页的。 也就是说始终显示第一页的内容? 这个怎么解决? 望指教。
河南省郑州市 22F
用你的这个代码页是一样。
江苏省无锡市 23F
请问代码添加在style。css的哪个位置啊?我是超级菜鸟啊!
B1
@ toptpe 加到最后
江苏省无锡市江阴市 B2
@ 知更鸟 呵呵,感谢的五体投地,以后在CSS,我都知道加到最后了啊
江苏省无锡市江阴市 24F
直接复制代码,前面怎么还带着123456789等数字呢
B1
@ toptpe 换用其它非IE核心浏览器复制
江苏省无锡市江阴市 B2
@ 知更鸟 呵呵,确实是这样的!
江苏省无锡市江阴市 25F
1.function kriesi_pagination($query_string){
这段代码放在FUNCTION.PHP的哪个位置啊?原谅我是超级菜鸟啊
B1
@ toptpe 加到functions中最后一个“?>”上面
江苏省无锡市江阴市 B2
@ 知更鸟 感谢鸟哥仔细的解答,搞定了!
北京市 26F
老大我的按照您的方法加上了
但是翻页好像不能用
只能实现翻页一次
第二次就无法翻页了,一直停留在第一次翻页后的页面
求解答啊
或者方法发到我邮箱
在此表示感谢了……
江西省南昌市 27F
鸟哥,能不能实现 分页标题 呀! 这样对优化好点呀!
浙江省温州市 28F
这个方法很不错
山东省济南市 29F
鸟哥,我的代码是这样该替换哪里啊?
max_num_pages;
if ( $total_pages > 1 ) {
echo ”;
posts_nav_link(‘ | ‘, __(‘« Previous page’,’zbench’), __(‘Next page »’,’zbench’));
echo ”;
}
}
?>
广东省东莞市 30F
发现原来鸟哥是如此的历害角色,直接拿来用,稍改了下CSS颜色就OK了,
B1
@ 童佳倩 你在哪看过一样的代码?
广东省东莞市 B2
@ 知更鸟 鸟哥,误会误会~~真不好意思啦,我没有表达清楚,其实我是说我直接把你的代码拿来用了,不是说你拿别人的,,,,,,,抱歉啦!
天津市 31F
从您这儿学到了不少呢 加油 继续支持
河北省唐山市 32F
经过仔细研究和不断尝试。终于成功分页了。感谢楼主的代码。回头修改CSS
山东省菏泽市 33F
问个问题啊,用的这个分页代码,原来首页是8篇文章每页,总页数是21,后来我改到每页12篇了,总页数还是21,后面几页全是空的,然后写几篇文章增加了一页后,总页数变成22,后边4页还是空的,这个问题怎么解决啊
广东省广州市 34F
我也来试试
吉林省延边州 35F
学习了 感谢博主的分享
北京市 36F
现在这代码还能用吗?
河南省郑州市 37F
你好,我用这段代码了,可是,连标签页面,page页面显示分页有问题。比如首页文章比较多,显示的两页,没问题,但是标签页面也是显示两个页面,第二页就是404。怎么解决,谢谢啊
陕西省西安市 38F
鸟哥 你好 我想问下 为什么我用这代码 上一页 下一页 尾页 首页 这部分都显示不出来 其它都正常
安徽省合肥市 39F
过来学习一下了
北京市 40F
我使用了这个方法,但是一用,页面就窜了
来自外部的引用