编写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 相关文章推荐
社区(php&amp;&amp;mysql)三
Oct 09 PHP
smarty+adodb+部分自定义类的php开发模式
Dec 31 PHP
php xfocus防注入资料
Apr 27 PHP
php 三维饼图的实现代码
Sep 28 PHP
php替换超长文本中的特殊字符的函数代码
May 22 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
Apr 24 PHP
php实现字符串首字母转换成大写的方法
Mar 17 PHP
Yii2 GridView实现列表页直接修改数据的方法
May 16 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
Yii2配置Nginx伪静态的方法
May 05 PHP
php layui实现前端多图上传实例
Jul 30 PHP
调试php程序的简单步骤
Oct 04 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 获取当前访问的url文件名的方法小结
2010/02/08 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
JS验证输入的是否是数字及保留几位小数问题
2018/05/09 Javascript
微信小程序实现发红包功能
2018/07/11 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
vue使用exif获取图片旋转,压缩的示例代码
2020/12/11 Vue.js
浅析Python四种数据类型
2018/09/26 Python
Windows下安装Scrapy
2018/10/17 Python
python pygame模块编写飞机大战
2018/11/20 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
Python线程threading模块用法详解
2020/02/26 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
python把一个字符串切开的实例方法
2020/09/27 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
财产保全担保书范文
2014/04/01 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
民事答辩状格式范文
2015/05/21 职场文书
永远是春天观后感
2015/06/12 职场文书
单独二胎证明
2015/06/24 职场文书
情人节单身感言
2015/08/03 职场文书
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫