首页 » WordPress » WordPress 技巧:不用插件实现 Pagenavi 功能

WordPress 技巧:不用插件实现 Pagenavi 功能

Pagenavi 是一个很好的功能,现在 WordPress 博客一般都是使用 WP-Pagenavi 插件来实现,其实 WordPress 现在已经自己支持 Pagenavi 功能了,只需要简单的代码下就可以实现 Pagenavi 功能。

WordPress 从 2.1 版本开始就提供了 paginate_links 的函数,它可以在任何地方显示页码导航链接。这个函数的基本参数如下:

其中 ‘base’ 参数用来提供创建页面链接的参考链接,’format’ 参数是用来替换成页码。’total’ 参数是设置页面的总数,’current’ 参数用于设置当前的页码,它们都必须是整数。这些参数我们在使用的时候必须提供的。

‘show_all’ 参数设置为 true 就会显示所有的页面,默认情况它是被设置为 false 的,通过 ‘end_size’ 和 ‘mid_size’ 这两个参数来控制页码显示的规则。’end_size’ 参数是用来控制在开始和结束的两端显示多少个数字,默认是 1 。’mid_size’ 参数是用来显示多少个数字显示在当前页数字的两边,并且不包括当前页。

‘prev_next’ 这个参数是用来设置是否显示上一页和下一页的页码链接,默认是 true,然后我们可以通过 ‘prev_text’ 和 ‘next_text’ 这两个参数来控制上一页和下一页的文本。

这样我们只需要提供,页码链接的基准链接,替换成页码的地方,以及当前页和总页数就可以实现使用 paginate_links 函数实现 Pagenavi 功能。

function native_pagenavi(){
    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('page','%#%'),
    'format' => '',
    'total' => $wp_query->max_num_pages,
    'current' => $current,
    'prev_text' => '« ',
    'next_text' => ' »'
    );
 
    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 '<p class="page_navi">'.paginate_links($pagination).'</p>';
}

将代码复制到当前主题的 functions.php,然后再相关的主题模板文件中使用 native_pagenavi() 函数。

标签:

分享到:

16 条评论 添加你的评论 →

  • ideaonly 2010-07-17 20:48:31 #

    哈哈,谢谢Denis大侠相助!先坐稳沙发再说!

    支持5 反对1

    • ideaonly 2010-07-17 20:53:48 #

      故事是这样的,刚才我在QQ请教剑鱼兄:
      A-优地[贾维] 19:11:49
      可以请教个问题么,
      我使用了Page Navi,如何设置或者修改代码,才可以让第二页的布局和第一页相同?现在的第二页是网站默认的搜索/频道页面的布局
      剑鱼 19:12:12
      我在写文章
      剑鱼 19:12:18
      WordPress 技巧:不用插件实现 Pagenavi 功能
      剑鱼 19:12:20
      我晕
      A-优地[贾维] 19:19:16
      我就在沙发上等你写吧,给您来一杯咖啡(QQ表情)
      ……

      支持1 反对

  • 邪罗刹 2010-07-17 22:23:30 #

    板凳坐坐 ~ O(∩_∩)O哈!

    支持 反对1

  • 左手 2010-07-18 12:44:14 #

    请问水煮鱼,你的博客RSS输出里的这一段是如何实现的?

    ————

    © 我爱水煮鱼 / 收藏本文 / 4条评论 / RSS 订阅 / 长期承接 WordPress 项目 / Hosting by (mt) Media Temple

    相关日志

    WordPress 日志缩略图功能
    使用 WordPress 的导航菜单
    WordPress 收费咨询服务:WPJAM VIP
    WordPress 3.0 发布
    WordPress Transients API 介绍

    支持2 反对

  • Dreamcolor 2010-07-20 14:31:57 #

    准备给俺地主题也加上。咩哈哈哈哈哈~ :mrgreen:

    才想起来,我居然已经注册过了。

    支持 反对

  • Danny.J 2010-07-21 02:14:24 #

    Hi,Denis

    有个问题想请教一下。你博客上的这种”http://fairyfish.net/go/xxxxx”跳转连接是怎么做出来的?是使用你以前发布的那个防SPAM插件弄出来的效果么?

    支持 反对

  • 左手 2010-07-28 15:05:15 #

    还没做出来??

    支持 反对

  • lingxueyong 2010-08-01 21:45:46 #

    楼主,能不能帮忙看一下我的网站,我的网站当缩小窗口的时候,里面的内容就变形了,网址是www.hancy.co.cc, 先谢谢了 :neutral:

    支持 反对

  • FiFi 2011-01-10 15:21:26 #

    占位置,上班不忙了在看 :mrgreen: :mrgreen:

    支持 反对

  • 良心发现 2011-01-24 23:25:40 #

    在本地测试照着用,结果跳转的链接不对。
    我是把@add_query_arg(‘page’,'%#%’)中的page改成paged就可以。

    支持 反对

发表评论

你必须 登陆 之后才能留言。你可以使用以下方式快速登陆我爱水煮鱼:

使用新浪微博登陆 使用腾讯微博登陆 使用豆瓣登陆

你也可选择直接在本站 注册