不用插件实现 WP-PageNavi 功能(进阶版)

开始本文之前请先阅读 WordPress 技巧:不用插件实现 Pagenavi 功能

接着是一坨广告:如果有企业要建站,推荐凶器 WP Jam

然后开始正文:

根据先阅读的那篇文章,教偶们如何用 wordpress 自带函数实现 pagenavi 功能
整完后输出的就是12344567的数字了

但还木有实现 pagenavi 的表现,也木有 左边那坨当前页面/总页面指示数
这就是为啥要写这篇文章的原因了

pagenav的缺点:多一个外挂样式表 一个http 请求是非常占速度的,可参考yslow说明书
以插件形式载入,虽然灵活,但以性能为代价

因为水煮鱼已经介绍过了,我直接就说修改的地方了,输出结果可以参考截图

第一步:在 functions.php 的 <?php 和 ?> 之间插入


function ooxx_nav(){
global $wp_query, $wp_rewrite;
$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;

$pagination = array(
'base' => @add_query_arg('paged','%#%'),
'format' => '',
'total' => $wp_query->max_num_pages,
'current' => $current,
'prev_text' => '&laquo; ',
'next_text' => ' &raquo;'
);

if( $wp_rewrite->using_permalinks() )
$pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg('s',get_pagenum_link(1) ) ) . 'page/%#%/', 'paged');

if( !empty($wp_query->query_vars['s']) )
$pagination['add_args'] = array('s'=>get_query_var('s'));

echo '<div class="ooxx_nav"><span class="page-numbers pages">Page'.$pagination[current].' of '.$pagination[total].'</span>'.paginate_links($pagination).'</div>';
}

第二步: 在 style.css 里插入


.ooxx_nav{clear:both;margin:5px -2px;overflow:hidden;zoom:1;text-align:center;}
.ooxx_nav .page-numbers:hover{background:#FF3D86;color:#FFF;-moz-box-shadow:1px 1px 1px #DDD;-webkit-box-shadow:1px 1px 1px #DDD;box-shadow:1px 1px 1px #DDD;}
.ooxx_nav .page-numbers,
.ooxx_nav .dots:hover,
.ooxx_nav .pages:hover{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;background:#FFF;display:inline-block;float:left;height:18px;margin:2px;min-width:28px;_width:28px;padding:1px;}
.ooxx_nav .page-numbers:visited{opacity:0.5;}
.ooxx_nav .current,
.ooxx_nav .current:hover{background:#7BAFA7;color:#FFF;font-weight:bold;-moz-box-shadow:1px 1px 1px #DDD;-webkit-box-shadow:1px 1px 1px #DDD;box-shadow:1px 1px 1px #DDD;}
.ooxx_nav .pages,
.ooxx_nav .pages:hover{color:#CCC;width:120px;}

第三步: 在需要导航的适当位置,例如index.php search.php 里插入


<?php if(function_exists('ooxx_nav')) {ooxx_nav(); } ?>

要直接用的拷贝上头代码直接用即可,听解释的继续看

第一步里 function ooxx_nav() 作用就是新建一个输出页码的函数,名字随便来,当然调用的时候要对上
这里改动不大

1. 基于语义考虑<p />标签改为<div />,当然最好改成<nav />如果你已经createElement的话,哈
2. 调用变量 $pagination 数组里的当前页和总页数组重新合成左侧那坨功能
3. 左箭头和右箭头用字符实体标示一下更规范

第二步里 你可以根据自己的主题修改颜色
box-shadow 为页码数投影
border-radius 为圆角程度
-moz- firefox 私有
-webkit- chrome safari qq浏览器 maxthon 等webkit内核私有
不细说,有需求留言即可

第三步加入 function_exists() 判断 ooxx_nav() 是否存在,要是不存在也没关系
如果不加判断,天会塌下来

–update–

感谢 yun77op 找茬

'base' => @add_query_arg('page','%#%'),
应改为
'base' => @add_query_arg('paged','%#%')

少了个d,非permalinks固定连接的同学会链接失效


已发布

分类

来自

标签:

评论

《“不用插件实现 WP-PageNavi 功能(进阶版)”》 有 53 条评论

  1. mice 的头像

    😳 我的留言呢…

    1. bigCat 的头像

      @mice, 沙发杀无赦

  2. mice 的头像

    你那个邮件提醒中的 http://caitou.com/logo.gif
    貌似还是老域名噢.

    5555555 我的沙发怎么没了..

    1. bigCat 的头像

      @mice, 恩,已经更新了的,谢谢

  3. mice 的头像

    🙁 还好沙发又回来了 哇哈哈, 😳 下次留三个字,不留俩个了 👿

    1. bigCat 的头像

      @mice, ❓ 稍微有营养点……

      1. mice 的头像

        @bigCat, 😮 下次知道了..

  4. Leigh 的头像

    摸一下……居然不能变大 🙁

    1. bigCat 的头像

      @Leigh, 呃,没有做那个效果。。。IE下面可以方便的用zoom做,嘻嘻,其他就要用position了

  5. 8yaya 的头像

    看不懂 只好先收藏

  6. Jimmy 的头像

    努力学习天文知识

  7. 左岸读书 的头像

    再这样下去,什么插件都可以省了。

  8. Mini Dragon 的头像

    免插件流路过

  9. Dianso 的头像

    我的也是免插件

  10. MOPVHS 的头像

    😉 好怀念以前那个晃一下就变粗҈大的效果~~ 😳

  11. 帮主 的头像
    帮主

    又发现新大陆了~~
    大猫同志的博文果然不讲废话

  12. Bee君 的头像

    能收工代码解决就收工~插件有不少后遗症

  13. lifishake 的头像

    你怎么也开始搞这套了?把插件里的代码搬到function里就是免插件,罗罗嗦嗦的干啥啊。
    不喜欢一切非都搞成非插件,换皮的时候太麻烦。

    1. 大猫 的头像

      @lifishake, 😳 主要多个请求数很不爽啊…hack插件也麻烦…加上这个实现比较方便来着哈哈
      如果是wp pagenavi 换皮肤的时候同样需要插入那坨function…

      1. lifishake 的头像

        @大猫, 后边的那句是泛指.我真看不懂现在的免插件趋势.

        1. bigCat 的头像

          @lifishake, 😉 折腾中会理解插件的工作原理,基于学习的目的,嘿嘿,要是基于用的爽,管他性能捏.~

  14. HJin_me 的头像

    系统是 Ubuntu 的?任务栏这么炫~~?喜欢

    1. 大猫 的头像

      @HJin_me, 呃docky还是很赞的,但是显卡差跑不起来..

  15. A.shun 的头像

    我用的是 willin 的 Mini Pagenavi,代码量也很少

    1. 大猫 的头像

      @A.shun, 代码量其实不是重头,拖速度排第一的是http请求数,有个外挂样式表

      1. A.shun 的头像

        @大猫, 差不多的哦,我说的那个也是免插件,也是几行样式 😆

  16. MC柯 的头像

    订阅了你的blog,最近想学wordpress,所以就

    1. 大猫 的头像

      @MC柯, 真的想学建议别从blog开始,去看codex.wordpress.org
      blog只是技巧,没有基础的,没基础你也理解不了技巧更不用说想出来啥技巧 🙂

  17. chisdy 的头像

    嘿嘿!找个时间测试下,好久没动wp了~

  18. yun77op 的头像

    找碴的
    ‘base’ => @add_query_arg(‘page’,’%#%’),
    应改为base’ => @add_query_arg(‘paged’,’%#%’),
    不然非永久链接用户会有麻烦, 🙂

    1. bigCat 的头像

      @yun77op, 求具体麻烦,虽然偶不怎么会PHP,但是我就是固定连接啊,没见有啥子问题

      1. yun77op 的头像

        @bigCat, 我说有麻烦的是那些,使用默认链接方式,$wp_rewrite->using_permalinks() 返回false的那些,他们是通过http://localhost/wordpress/?paged=2而不能http://localhost/wordpress/?page=2,不是默认链接是http://localhost/wordpress/page/2

        1. bigCat 的头像

          @yun77op, 感谢,加了个update上去~

  19. 都市圈 的头像

    我也和博主一样使用火狐

  20. 北京婚纱摄影工作室 的头像

    看来要常来看看大猫了,经常发经典文章啊

  21. mealdy 的头像

    第一次来,先说句无关文章的话吧,博客好漂亮啊,哈哈 😆

    1. bigCat 的头像

      @mealdy, 😛 非IE浏览更赞哦

  22. hzlzh 的头像

    向无插件奋斗~~~尽管只是个传说~ 😛
    好吧,我承认,这次我终于记得订阅这个se情站点了~ 😈

    1. bigCat 的头像

      @hzlzh, 😳 传说也都是传出来的,嘿嘿,不靠谱

  23. junofeeng 的头像

    😯 还是插件来的实在。博主的主题华丽丽……

    1. bigCat 的头像

      @junofeeng, 哈哈,蛋疼了才折腾木插件的

  24. wallets 的头像

    博主很强大,学习了

  25. max 的头像

    太好了,写的真不错

  26. 插件 的头像

    使用插件简单多了吧 直接激活就可以用 什么都不用修改

    1. bigCat 的头像

      @插件, 呃,图的是代码的快感

  27. 立青 的头像

    收下了,拿回去研究, 😯

  28. 赵福安 的头像

    🙄 还需要改CSS啊,这个有点头大。

    1. bigCat 的头像

      @赵福安, 哈哈,偶靠CSS吃饭

  29. 亿品元素 的头像

    话说那个CSS代码好邪恶

  30. 何苦呢 的头像

    不用插件 省了不少

  31. 方刀刀 的头像

    shit,TKS,完美了,终于结束掉了一个插件。

    注:我已经把邪恶的代码替换掉了

  32. 洪伟博客 的头像

    好东西啊 谢谢分类了!

回复 Bee君 取消回复

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