wordpress 功能集成(六):无插件实现页码

本贴最后更新于 4034 天前,其中的信息可能已经时移世易

wordpress很多主题没有自带页码,而是“上一页”“下一页”的链接,但是按照我们国人的习惯,有页码将会方便很多,事实上wordpress是有页码函数的,完全不必要为了这么点小功能而去装一个插件。函数paginate_links(),官网的介绍是:Retrieve paginated link for archive post pages. Technically, the function can be used to create paginated link list for any area ( e.g.: « Prev 1 … 3 4 5 6 7 … 9 Next » )。不过直接使用这个函数是不会显示页码的,需要配置参数。

按照官网示例在需要显示页码的地方添加如下函数即可显示页码与上下页链接:

  1. <?php   
  2. global $wp_query;   
  3.   
  4. $big = 999999999; // need an unlikely integer   
  5.   
  6. echo paginate_links( array(   
  7.     'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),   
  8.     'format' => '?paged=%#%',   
  9.     'current' => max( 1, get_query_var('paged') ),   
  10.     'total' => $wp_query->max_num_pages   
  11. ) );   
  12. ?>  

不过按照这样配置,不是很方便,一般我们将新定义一个函数用来显示页码,这样每次调用的时候,就不需要重复配置这些参数,代码页更简洁,便于修改。如下,只需往主题的functions.php文件中添加页码函数:

  1. //页码函数   
  2. function wp_pagenavi() {   
  3.     //先申明两个全局变量   
  4.     global $wp_query, $wp_rewrite;   
  5.     //判断当前页面   
  6.     $wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;   
  7.        
  8.     $pagination = array(   
  9.         'base' => @add_query_arg('paged','%#%'),   
  10.         'format' => '',   
  11.         'total' => $wp_query->max_num_pages,   
  12.         'current' => $current,   
  13.         'show_all' => false,   
  14.         'type' => 'plain',   
  15.         'end_size'=>'1',   
  16.         'mid_size'=>'3',   
  17.         'prev_text' => '上一页',   
  18.         'next_text' => '下一页'   
  19.     );   
  20.        
  21.     if( $wp_rewrite->using_permalinks() )   
  22.         $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg('s',get_pagenum_link(1) ) ) . 'page/%#%/', 'paged');   
  23.     if( !emptyempty($wp_query->query_vars['s']) )   
  24.         $pagination['add_args'] = array('s'=>get_query_var('s'));   
  25.     echo paginate_links($pagination);   
  26. }  

按照上面的函数调用该函数即可:

  1. <?php wp_pagenavi(); ?>  

显示效果如图,当然我需要css配合才行:

无插件显示页码效果

函数的几个常修改的参数如下:

 
  1. <?php   
  2. echo paginate_links( $args );   
  3. $args=array(   
  4.     'base'=> '%_%',   
  5.     'format'=> '?page=%#%',   
  6.     'total'=> 1,//总共显示的页码数   
  7.     'current'=> 0,//当前页码数   
  8.     'show_all'     => False,//是否将所有页码都显示出来,可以如上图中间显示省略号,需配合下两个参数   
  9.     'end_size'=> 1,//在最后面和最前面至少显示多少个数,比如1,如图,最后面显示了至少显示一个页码“20”   
  10.     'mid_size' => 2,//在当前页码的前后至少显示多少个页码数   
  11.     'prev_next'    => True,//是否显示“上一页”“下一页”链接   
  12.     'prev_text'    => __('&laquo; Previous'),//“上一页”链接显示的文字   
  13.     'next_text'    => __('Next &raquo;'),//“下一页”链接显示的文字   
  14.     'type'         => 'plain',   
  15.     'add_args'     => False,   
  16.     'add_fragment' =>  );    
  17.     );   
  18. ?>  

看官可自行修改函数中的配置参数

  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    45 引用 • 113 回帖 • 317 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 642 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    476 引用 • 899 回帖
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    75 引用 • 258 回帖 • 630 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    4 引用 • 55 回帖 • 7 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 692 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • 职场

    找到自己的位置,萌新烦恼少。

    126 引用 • 1699 回帖
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 28 关注
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    169 引用 • 799 回帖
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    40 引用 • 40 回帖
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 44 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    333 引用 • 323 回帖 • 70 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖 • 4 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 293 关注
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 84 关注
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    163 引用 • 1450 回帖 • 1 关注
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 455 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    138 引用 • 268 回帖 • 199 关注
  • 安全

    安全永远都不是一个小问题。

    189 引用 • 813 回帖
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    21 引用 • 22 回帖
  • danl
    61 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 553 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 69 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    35 引用 • 35 回帖
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 37 关注