编写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中的字符串函数
Oct 09 PHP
很让人受教的 提高php代码质量36计
Sep 05 PHP
使用PHP Socket 编程模拟Http post和get请求
Nov 25 PHP
dedecms集成财付通支付接口
Dec 28 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
PHP变量赋值、代入给JavaScript中的变量
Jun 29 PHP
列举PHP的Yii 2框架的开发优势
Jul 03 PHP
php 指定范围内多个随机数代码实例
Jul 18 PHP
php 获取文件行数的方法总结
Oct 11 PHP
遍历echsop的region表形成缓存的程序实例代码
Nov 01 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
php实现的生成排列算法示例
Jul 25 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
mysql 全文搜索 技巧
2007/04/27 PHP
pdo中使用参数化查询sql
2011/08/11 PHP
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
PHP读取文件内容后清空文件示例代码
2014/03/18 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
2012/05/23 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS
2013/11/18 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
jQuery的ajax下载blob文件
2016/07/21 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
简单了解python的内存管理机制
2019/07/08 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
荟萃全球保健品:维他购
2018/05/09 全球购物
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
移动通信行业实习自我鉴定
2013/09/28 职场文书
公司活动邀请函
2014/01/24 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
在人间读书笔记
2015/06/30 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
用Python创建简易网站图文教程
2021/06/11 Python
python中的3种定义类方法
2021/11/27 Python