越少的使用插件,却能让使用者完全体验到主题的各项功能,才是真正好的主题,这也是所有主题设计者应考虑的问题,本站目前的新主题基本实现了零插件。网上不使用插件实现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
我使用了这个方法,但是一用,页面就窜了
浙江省杭州市 41F
很明了很好用!
安徽省合肥市 42F
博主很强大。。这主题做的真心很不错
广西柳州市 43F
好东西!谢谢分享了!
广东省佛山市 44F
鸟哥 请问怎么改成 发表的文章数 超过5就分页啊
我想把它改成文章数超过5就分页
怎么改呀?
急求 谢了
中国 B1
@ jay 后台—设置—-阅读—博客页面至多显示 5篇文章 OK
湖北省孝感市 45F
很好 很强大!!!!!
四川省巴中市 46F
本来想试试来着,看评论问题很多啊,不知道博主有没有即时更新代码呢
广东省东莞市 47F
我的网站分页从第三页开始就提示说找不到页面,不知道怎么回事,网址 http://mirabbit.com
广东省东莞市 48F
非常好,已解决!谢谢分享
安徽省合肥市 49F
鸟哥,你好,我的显示不了最前和最后,是为什么呢。
如果替换这两个,连上一页下一页都没有呢,只有数字,帮忙看看,谢谢
我的主题是Prower4
安徽省合肥市 B1
@ lu8010252 是不是需要很多日志才有最前最后呢?我现在只有10篇两页
安徽省合肥市 B2
@ lu8010252 抱歉,鸟哥,已经弄好了,因为我的页数太少,谢谢了
辽宁省大连市 50F
有一点遗憾的地方,为了取得总件数,需要把所有符合条件的数据都检索出来,效率不高
福建省南平市 B1
@ johnsonshu 同意你的看法,我也是因为这个问题在网上搜索进来的,没使用之前,加载速度为:0.437秒左右,使用之后,加载速度为:0.737秒左右。可以说慢了一倍。不知道还有没有什么更效率的方法。
河北省石家庄市 51F
想问一下鸟哥从哪里可以学习一些HTML和DIV+CSS的知识,能推荐一下吗?谢啦!
中国 B1
@ 李梓朋 网上教程很多的,可以先看看这个比较基础的视频教程:
http://www.enet.com.cn/eschool/video/cpcss/
DIV+CSS其实很简单的,多动手试试就行了
另外还可以看看这篇:
http://zmingcx.com/wordpress-theme-modify-tutorial.html
湖北省武汉市 B2
@ 知更鸟 freemoban.com 这个里面有div+css知识
新疆乌鲁木齐市 52F
1、我首页底下的那4个分类的图片我要给他们指定固定图片,而不是文章里边的图片;或者直接不要显示图片最好
2、我首页左上角的那个图片框只让他显示我指定的一些图片,而不是随机图片。
我该怎么做?有没有什么连接文档给推荐下看看也行
谢谢~
中国 B1
@ yallonking 你的所有问题,主题使用说明都有
吉林省长春市 53F
有没有像http://www.aiken-snap.com/snap/no-027/ 这个分页链接以 目标页 的缩略图显示的??
北京市 54F
$my_query = new WP_Query($query_string .”&posts_per_page=-1″);
数据量太大 内存会紧张
要调整下取post_count的策略
广东省中山市 B1
@ cc 这个要怎样改进啊。。我正正有这个问题。。
广东省中山市 B1
@ cc 亲。。数据量大时。。WP_Query怎样解决呢。
山西省吕梁市 55F
大大,这个可不可以用于 长文章用 nextpage 分页后,下面导航样式呢,如果可以,该怎么设置,如果不可以,有木有可以设置的方法。。。
求大大解答下啦
湖北省仙桃市 56F
那么你这个主题里面默认翻页代码或分页插件代码是哪里呢 我对这不精通的,
福建省宁德市 57F
谢谢分享
浙江省嘉兴市 58F
不知道什么原因,按你的方法不行,网站都打不开
北京市 59F
我的也是,提示错误。
福建省福州市 60F
鸟哥。换了个新主题,用这个分页代码出现一个BUG。就是在分类栏目下面总页数和在page页面下的总页数相同。然后就出现在分类栏目下点击最后一页出现404…求助。。
广东省深圳市 61F
我试了,根本没用啊。怎么回事?
澳门 62F
請問$query_string這個變量怎樣來的?
甘肃省天水市 63F
嘿嘿 这个真的很好
上海市 64F
这个插入到哪里呢???
用的是默认的主提Twenty Twelve
江苏省南京市 65F
00iiii个
四川省成都市 66F
正好用上!设置一次显示多页怎么办?
重庆市 67F
我正在找哦,这个还没有用过
山东省济南市 68F
这个使我网站速度慢了一倍
四川省成都市 69F
还没有摸清楚,模板定制自己做但不知道怎么套进到系统里。
贵州省 70F
感谢分享,正在寻找!
江西省南昌市 71F
根本看不懂,我也不知道从哪插入
浙江省杭州市 72F
分页链接是page/2 但是页面显示404啊
浙江省杭州市 73F
谢谢楼主分享,希望能用在我的网站上
浙江省杭州市 74F
sdfdsf 梵蒂冈和返回
云南省昆明市西山区 75F
由于需要,我在边栏的内容使用了分页,之后带来一个问题,主页面的分页和边栏的分页会一起同步翻页,例如我在边栏点第二页,主页面也会跟着翻到第二页,请问这要如何解决?
中国 B1
@ tata 想实现你说的功能,需要用到AJAX方面的技术,无刷新加载文章
上海市 76F
鸟哥,能在单独的页面中添加这个吗,我那个一个页面中加了好多东西,想弄个分页
来自外部的引用