越少的使用插件,却能让使用者完全体验到主题的各项功能,才是真正好的主题,这也是所有主题设计者应考虑的问题,本站目前的新主题基本实现了零插件。网上不使用插件实现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;
- }
上面的样式是我目前用的主题样式,根据不同的主题修改一下边框与背景,基本就可以了,之后删除分页插件。

版权声明
本站原创文章转载请注明文章出处
2010年3月17日 23点21分 1F
很好的教程呢,谢谢分享的。
2010年3月18日 15点11分 2F
主题真漂亮。
2010年3月18日 17点57分 3F
请问版主 THEME 中的 Quarx 首页的大幻灯片如何添加自定义代码 我的老显示不出来 添加Image
2010年3月18日 18点46分 B1
@ Elanse 主题站上说明没看懂?主题包中有添加缩略图的说明,英文如果和我一样差,看图片说明就够了,另外如果你用的空间是WIN主机,就放弃使用这款主题吧
2011年10月29日 04点51分 B2
@ 知更鸟 为什么添加后, 上一页下一页 最后 最前 是乱码啊。
2011年10月29日 11点45分 B3
@ 客官 是编码错误,中文模版为UTF-8,无BOM
2012年5月20日 12点45分 B4
@ 知更鸟 你好 我想问下 为什么我用这代码 上一页 下一页 尾页 首页 这部分都显示不出来
2015年12月7日 10点03分 B4
@ 轻舞飞扬 你的显示出来了吗
2012年5月20日 15点37分 B4
@ 知更鸟 那鸟哥 在请问一下 我直接把你的代码放在functions.php 这个页面中的 请问怎么设置 编码 和无BOM呢? 谢谢
2011年11月17日 11点28分 B1
@ Elanse 这个能够在自定义模板中使用吗?我试了下,页数和链接都能出现,但是点击上一页和下一页时页面没有变化,并没有跳转到相应的页面去。。。。这是怎么回事呢
2013年5月28日 22点54分 B2
@ 伊星晴 我也是同样的问题
2010年3月22日 09点20分 4F
请问博主:
接下来用下面的代码替换原来模板中默认翻页代码或分页插件代码:
这段代码在哪个文件里啊?
2010年3月22日 11点03分 B1
@ 8路杂讯 一般在archive.php index.php文件中,
比如WP默认模板是:
< ?php next_posts_link(__('« Older Entries', 'kubrick')) ?>
< ?php previous_posts_link(__('Newer Entries »', 'kubrick')) ?>
2010年3月22日 13点51分 B2
@ 知更鸟 谢谢 找到了 我的代码是
2010年4月2日 17点26分 B3
@ 8路杂讯 汗 原来我输入不了代码
2010年3月26日 13点59分 5F
这方法不错,一会去折腾下
2010年3月28日 22点32分 6F
$range = 2; 我改成5之后,在category分类里面,选择最后一页,是没有内容的,甚至选择倒数的几页,也是空白的哦。。请问怎么修改呢? 谢谢
2010年3月28日 22点43分 B1
@ Skyoy 额 原来是判定的数值问题哦。因为我在archive.php下面是8篇,在后台阅读的是6篇。可上门的函数只调用后台默认的。
2011年6月26日 11点04分 B2
@ Skyoy 用得很好。。谢谢。。
2010年4月14日 18点34分 7F
这样做会不会拖慢速度?刚从引擎上点你的文章一直显示 在加载中
2010年4月15日 01点19分 B1
@ pazz7ven 对我用的主题来说,没有加载任何多余的东西,所以不会影响速度
2010年4月24日 22点43分 8F
如果单日志实现分页..怎么弄呢..请教一下..
2010年4月24日 23点12分 B1
@ charger 又是同一个问题,编辑文章时切换到代码模式,在分页处加{!–nextpage–} ,把{}换成<>
2010年4月26日 13点41分 B2
@ 知更鸟 额.大哥..那如果我没采用你的方法..还是用插件.能不能插入nextpage标签?我试了好像不行..有没其他办法?
2010年4月26日 21点02分 B3
@ charger 没听说日志分页还有插件,主题不支持分页插入标签也没用
2010年8月30日 22点00分 9F
插件是越少越好啊!
2010年9月9日 01点40分 10F
wp折腾去掉plugin,其乐无穷
2010年12月2日 09点46分 11F
我用这个主题做了个博客,为何没有分页呢?
我的函数是function pagination($query_string)
在index.php这个文件中的调用是:
为何没有效果呢?
2010年12月10日 04点32分 12F
这个如果在单独的页面加入貌似不显示分页
尝试了好几次都没用
2010年12月14日 12点33分 13F
很好的方法呢,先收藏了
2011年4月6日 15点16分 14F
收藏
2011年4月18日 14点38分 15F
这个要放在哪里吖?
2011年5月16日 22点16分 16F
用了下 效果很好
2011年5月26日 21点20分 17F
这个刚好看过,百度又进来啦,看样子不用百度了,直接在鸟哥站里搜就的了
2011年6月26日 00点52分 18F
博主好,最近更新了你的HotNews pro2.5主题,貌似2.5的主题已经集成了这篇文章里的分页代码,但是代码显示的效果不是很好,只能显示前几页的页码(1~7),超过7的页码都要点击“下一页”才能看到,而且最大页码也不显示再首页上,看着不是很舒服。
之前使用2.4没有这个问题,那是我还是用得wp-pagenavi分页导航插件,但是更新2.5后插件启用没反应,而且我发现你的博客分页导航和这篇文章的代码不一样啊,想问一下现在怎么在2.5的主题里去掉你这个翻页的效果还原成原来的?上面说替换的代码没有找到额。。。
2011年6月26日 01点12分 B1
@ wzj890711 现在我把“$range = 20; // 修改数字,可以显示更多的分页链”改成了20页现在可以显示全部页数了,但是翻页插件还是用不了,求帮助~~~
2011年8月24日 17点45分 19F
if(emptyempty($paged))$paged = 1; 博主的这行代码,貌似只要一个empty的函数吧
2011年9月25日 23点29分 20F
代码不错,拿来用了。。不过第5行写错了。。。
if(emptyempty($paged))$paged = 1;
应该是
if(empty($paged))$paged = 1;
2011年9月29日 09点53分 21F
请教个问题。 我弄的分页点击页码以后上面的URL看到的是已经转过去了。 但是页面的内容还是第一页的。 也就是说始终显示第一页的内容? 这个怎么解决? 望指教。
2011年9月29日 09点54分 22F
用你的这个代码页是一样。
2011年10月2日 17点57分 23F
请问代码添加在style。css的哪个位置啊?我是超级菜鸟啊!
2011年10月3日 10点49分 B1
@ toptpe 加到最后
2011年10月4日 11点45分 B2
@ 知更鸟 呵呵,感谢的五体投地,以后在CSS,我都知道加到最后了啊
2011年10月2日 19点52分 24F
直接复制代码,前面怎么还带着123456789等数字呢
2011年10月3日 10点49分 B1
@ toptpe 换用其它非IE核心浏览器复制
2011年10月4日 11点44分 B2
@ 知更鸟 呵呵,确实是这样的!
2011年10月2日 20点06分 25F
1.function kriesi_pagination($query_string){
这段代码放在FUNCTION.PHP的哪个位置啊?原谅我是超级菜鸟啊
2011年10月3日 10点50分 B1
@ toptpe 加到functions中最后一个“?>”上面
2011年10月4日 11点44分 B2
@ 知更鸟 感谢鸟哥仔细的解答,搞定了!
2011年10月14日 21点45分 26F
老大我的按照您的方法加上了
但是翻页好像不能用
只能实现翻页一次
第二次就无法翻页了,一直停留在第一次翻页后的页面
求解答啊
或者方法发到我邮箱
在此表示感谢了……
2011年10月28日 21点43分 27F
鸟哥,能不能实现 分页标题 呀! 这样对优化好点呀!
2012年1月7日 10点11分 28F
这个方法很不错
2012年2月3日 17点18分 29F
鸟哥,我的代码是这样该替换哪里啊?
max_num_pages;
if ( $total_pages > 1 ) {
echo ”;
posts_nav_link(‘ | ‘, __(‘« Previous page’,’zbench’), __(‘Next page »’,’zbench’));
echo ”;
}
}
?>
2012年2月12日 12点10分 30F
发现原来鸟哥是如此的历害角色,直接拿来用,稍改了下CSS颜色就OK了,
2012年2月12日 22点46分 B1
@ 童佳倩 你在哪看过一样的代码?
2012年2月12日 23点00分 B2
@ 知更鸟 鸟哥,误会误会~~真不好意思啦,我没有表达清楚,其实我是说我直接把你的代码拿来用了,不是说你拿别人的,,,,,,,抱歉啦!
2012年2月23日 19点44分 31F
从您这儿学到了不少呢 加油 继续支持
2012年3月3日 21点45分 32F
经过仔细研究和不断尝试。终于成功分页了。感谢楼主的代码。回头修改CSS
2012年3月5日 05点55分 33F
问个问题啊,用的这个分页代码,原来首页是8篇文章每页,总页数是21,后来我改到每页12篇了,总页数还是21,后面几页全是空的,然后写几篇文章增加了一页后,总页数变成22,后边4页还是空的,这个问题怎么解决啊
2012年3月16日 16点31分 34F
我也来试试
2012年4月2日 00点54分 35F
学习了 感谢博主的分享
2012年4月5日 21点38分 36F
现在这代码还能用吗?
2012年5月2日 11点00分 37F
你好,我用这段代码了,可是,连标签页面,page页面显示分页有问题。比如首页文章比较多,显示的两页,没问题,但是标签页面也是显示两个页面,第二页就是404。怎么解决,谢谢啊
2012年5月20日 13点23分 38F
鸟哥 你好 我想问下 为什么我用这代码 上一页 下一页 尾页 首页 这部分都显示不出来 其它都正常
2012年5月25日 16点31分 39F
过来学习一下了
2012年5月27日 11点12分 40F
我使用了这个方法,但是一用,页面就窜了
2012年7月15日 17点06分 41F
很明了很好用!
2012年7月18日 11点13分 42F
博主很强大。。这主题做的真心很不错
2012年7月23日 00点37分 43F
好东西!谢谢分享了!
2012年7月31日 17点34分 44F
鸟哥 请问怎么改成 发表的文章数 超过5就分页啊
我想把它改成文章数超过5就分页
怎么改呀?
急求 谢了
2012年7月31日 19点26分 B1
@ jay 后台—设置—-阅读—博客页面至多显示 5篇文章 OK
2012年8月22日 17点08分 45F
很好 很强大!!!!!
2012年8月31日 18点19分 46F
本来想试试来着,看评论问题很多啊,不知道博主有没有即时更新代码呢
2012年9月3日 15点34分 47F
我的网站分页从第三页开始就提示说找不到页面,不知道怎么回事,网址 http://mirabbit.com
2012年9月15日 02点36分 48F
非常好,已解决!谢谢分享
2012年9月24日 09点18分 49F
鸟哥,你好,我的显示不了最前和最后,是为什么呢。
如果替换这两个,连上一页下一页都没有呢,只有数字,帮忙看看,谢谢
我的主题是Prower4
2012年9月24日 09点29分 B1
@ lu8010252 是不是需要很多日志才有最前最后呢?我现在只有10篇两页
2012年9月24日 10点00分 B2
@ lu8010252 抱歉,鸟哥,已经弄好了,因为我的页数太少,谢谢了
2012年10月8日 13点33分 50F
有一点遗憾的地方,为了取得总件数,需要把所有符合条件的数据都检索出来,效率不高
2012年10月22日 15点44分 B1
@ johnsonshu 同意你的看法,我也是因为这个问题在网上搜索进来的,没使用之前,加载速度为:0.437秒左右,使用之后,加载速度为:0.737秒左右。可以说慢了一倍。不知道还有没有什么更效率的方法。
2013年1月9日 14点37分 51F
想问一下鸟哥从哪里可以学习一些HTML和DIV+CSS的知识,能推荐一下吗?谢啦!
2013年1月9日 14点46分 B1
@ 李梓朋 网上教程很多的,可以先看看这个比较基础的视频教程:
http://www.enet.com.cn/eschool/video/cpcss/
DIV+CSS其实很简单的,多动手试试就行了
另外还可以看看这篇:
https://zmingcx.com/wordpress-theme-modify-tutorial.html
2015年4月14日 19点25分 B2
@ 知更鸟 freemoban.com 这个里面有div+css知识
2013年1月9日 17点35分 52F
1、我首页底下的那4个分类的图片我要给他们指定固定图片,而不是文章里边的图片;或者直接不要显示图片最好
2、我首页左上角的那个图片框只让他显示我指定的一些图片,而不是随机图片。
我该怎么做?有没有什么连接文档给推荐下看看也行
谢谢~
2013年1月9日 21点10分 B1
@ yallonking 你的所有问题,主题使用说明都有
2013年1月23日 18点19分 53F
有没有像http://www.aiken-snap.com/snap/no-027/ 这个分页链接以 目标页 的缩略图显示的??
2013年2月21日 16点37分 54F
$my_query = new WP_Query($query_string .”&posts_per_page=-1″);
数据量太大 内存会紧张
要调整下取post_count的策略
2013年5月15日 16点50分 B1
@ cc 这个要怎样改进啊。。我正正有这个问题。。
2013年5月29日 11点09分 B1
@ cc 亲。。数据量大时。。WP_Query怎样解决呢。
2013年3月11日 23点18分 55F
大大,这个可不可以用于 长文章用 nextpage 分页后,下面导航样式呢,如果可以,该怎么设置,如果不可以,有木有可以设置的方法。。。
求大大解答下啦
2013年4月3日 23点45分 56F
那么你这个主题里面默认翻页代码或分页插件代码是哪里呢 我对这不精通的,
2013年4月13日 15点49分 57F
谢谢分享
2013年4月20日 16点05分 58F
不知道什么原因,按你的方法不行,网站都打不开
2013年5月29日 09点27分 59F
我的也是,提示错误。
2013年9月8日 21点49分 60F
鸟哥。换了个新主题,用这个分页代码出现一个BUG。就是在分类栏目下面总页数和在page页面下的总页数相同。然后就出现在分类栏目下点击最后一页出现404…求助。。
2013年9月26日 20点22分 61F
我试了,根本没用啊。怎么回事?
2013年11月22日 10点17分 62F
請問$query_string這個變量怎樣來的?
2014年3月12日 14点21分 63F
嘿嘿 这个真的很好
2014年4月17日 18点31分 64F
这个插入到哪里呢???
用的是默认的主提Twenty Twelve
2014年4月23日 13点42分 65F
00iiii个
2014年5月15日 10点12分 66F
正好用上!设置一次显示多页怎么办?
2014年6月3日 20点46分 67F
我正在找哦,这个还没有用过
2014年10月14日 14点30分 68F
这个使我网站速度慢了一倍
2015年1月30日 11点42分 69F
还没有摸清楚,模板定制自己做但不知道怎么套进到系统里。
2015年4月11日 14点01分 70F
感谢分享,正在寻找!
2015年6月23日 22点45分 71F
根本看不懂,我也不知道从哪插入
2016年6月16日 19点58分 72F
分页链接是page/2 但是页面显示404啊
2016年7月8日 11点56分 73F
谢谢楼主分享,希望能用在我的网站上
2016年8月16日 20点06分 74F
sdfdsf 梵蒂冈和返回
2016年9月27日 22点59分 75F
由于需要,我在边栏的内容使用了分页,之后带来一个问题,主页面的分页和边栏的分页会一起同步翻页,例如我在边栏点第二页,主页面也会跟着翻到第二页,请问这要如何解决?
2016年9月28日 13点03分 B1
@ tata 想实现你说的功能,需要用到AJAX方面的技术,无刷新加载文章
来自外部的引用: 13