编写PHP脚本来实现WordPress中评论分页的功能


Posted in PHP onDecember 10, 2015

方法说明

首先来看看可能被用到的方法. 打开文件 wp-includes/link-template.php 你会发现 WordPress 2.7 多了 4 个针对评论分页的方法:

  • get_comments_pagenum_link
  • $pagenum: 页码
  • $max_page: 最大页数

返回链接地址. 在本次应用中不会被用到, 但大家应该知道有这个方法, 将方便你制作插件.

next_comments_link

$label: 显示的字样, 默认是 » Newer Comments. 但我一直认为这是 bug, 应该是 Newer Comments » 吧?

$max_page: 最大页数

显示跳转到下一页的链接.

previous_comments_link
$label: 显示的字样, 默认是 « Older Comments.
显示跳转到上一页的链接.

paginate_comments_links
$args: 字符串参数组
- base: 页面 URL
- format: 我也不知道是什么. 谁能告诉我?
- total: 最大页数
- current: 当前页码
- echo: 是否显示, 默认为显示. 不显示时返回字符串 HTML.
- add_fragment: hash, 默认是 #comments. 为求统一, 方便理解, 也免得修改, 建议制作主题时 评论部分用 id="comments"
显示评论分页或返回评论分页的 HTML.

实例说明

1. 上一页和下一页
这是最简单, 也是最常被提到的, 效果与文章分页没什么两样.

<div id="commentnavi">
 <span class="floatleft"><?php previous_comments_link(__('« Older Comments')) ?></span>
 <span class="floatright"><?php next_comments_link(__('Newer Comments »')) ?></span>
 <div class="fixed"></div>
</div>

2. 导航式分页
对访客最透明, 使用起来最方便的, 效果与使用 WP-PageNavi 分页的效果相仿.

<div id="commentnavi">
 <?php paginate_comments_links(); ?>
</div>

看看前面的两个例子, 好像我们要的功能都可以实现了. 但是你觉不觉得有点怪怪的? 如果后台中选择不显示评论分页, 或者评论数不够分页, 也要显示 id="commentnavi" 的外框吗? 不! 我们要改改这个程序.
可以通过调用方法 get_option('page_comments') 来获取后台的评论分页选项.
我们还可以调用方法 paginate_comments_links('echo=0') 来知道评论是否足够并需要进行分页处理.

3. 上一页和下一页 (改进)

<?php
 // 如果用户在后台选择要显示评论分页
 if (get_option('page_comments')) {
 // 获取评论分页的 HTML
 $comment_pages = paginate_comments_links('echo=0');
 // 如果评论分页的 HTML 不为空, 显示上一页和下一页的链接
 if ($comment_pages) {
?>
 <div id="commentnavi">
 <span class="floatleft"><?php previous_comments_link(__('« Older Comments')) ?></span>
 <span class="floatright"><?php next_comments_link(__('Newer Comments »')) ?></span>
 <div class="fixed"></div>
 </div>
<?php
 }
 }
?>

4. 导航式分页 (改进)

<?php
 // 如果用户在后台选择要显示评论分页
 if (get_option('page_comments')) {
 // 获取评论分页的 HTML
 $comment_pages = paginate_comments_links('echo=0');
 // 如果评论分页的 HTML 不为空, 显示导航式分页
 if ($comment_pages) {
?>
 <div id="commentnavi">
 <?php echo $comment_pages; ?>
 </div>
<?php
 }
 }
?>

对于最新的评论分页功能, 我有点自己的看法, 也随便说一下吧.
评论分页并不完美. 如果外面某个链接转跳到 http://www.example.com/#5630, 但是编号为 5630 的评论并不在第一页, 那么就无法定位到这条评论上面, 转跳过来的兄弟的感觉会比较不爽.
另外, WordPress 的评论分页不是 AJAX 应用 (为浏览器的兼容性考虑, 以后也不太可能是), 所以翻页会相当耗时. 所以我建议, 就算要分页, 也要将每页显示的评论数设大一点. 30? 50? 100? 因博而异.

好了, 大概你已经知道该怎么使用了? CSS 就不多说了, 各有所好嘛, 这个不好说.

PHP 相关文章推荐
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
PHP 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
php编写一个简单的路由类
Apr 13 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
Jun 20 PHP
浅谈php+phpStorm+xdebug配置方法
Sep 17 PHP
PHP可变变量学习小结
Nov 29 PHP
Yii2隐藏frontend/web和backend/web的方法
Dec 12 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
php实现的简单中文验证码功能示例
Jan 03 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
实例讲解通过​PHP创建数据库
Jan 20 PHP
PHP读取PPT文件的方法
Dec 10 #PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
Dec 10 #PHP
PHP创建PowerPoint2007文档的方法
Dec 10 #PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
Dec 10 #PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 #PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 #PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
Dec 10 #PHP
You might like
php中将数组存到文件里的实现代码
2012/01/19 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
php之可变变量的实例详解
2017/09/12 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
基于JQuery制作的产品广告效果
2010/12/08 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
js Calender控件使用详解
2015/01/05 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
详解能在多种前端框架下使用的表格控件
2017/01/11 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
python验证码识别的实例详解
2016/09/09 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
日语专业毕业生自荐信
2013/11/11 职场文书
文明倡议书范文
2014/04/15 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
创业计划书详解
2019/07/19 职场文书
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis