编写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往windows中添加用户
Dec 06 PHP
php 设计模式之 工厂模式
Dec 19 PHP
php中使用Akismet防止垃圾评论的代码
Jun 10 PHP
php设计模式 Proxy (代理模式)
Jun 26 PHP
PHP抓取、分析国内视频网站的视频信息工具类
Apr 02 PHP
php打印输出棋盘的实现方法
Dec 23 PHP
PHP实现批量删除(封装)
Apr 28 PHP
PHP查询分页的实现代码
Jun 09 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
YII框架实现自定义第三方扩展操作示例
Apr 26 PHP
解决Laravel5.2 Auth认证退出失效的问题
Oct 14 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实现网站留言板功能
2015/11/04 PHP
一个简单的php路由类
2016/05/29 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
Javascript实现的分页函数
2007/02/07 Javascript
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
原生js实现验证码功能
2017/03/16 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
python实现将一个数组逆序输出的方法
2018/06/25 Python
Pytorch 实现自定义参数层的例子
2019/08/17 Python
Python如何使用字符打印照片
2020/01/03 Python
Python表达式的优先级详解
2020/02/18 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
北承题目(C++)
2012/05/16 面试题
运动会四百米广播稿
2014/01/19 职场文书
婚礼秀策划方案
2014/05/19 职场文书
个人自查自纠材料
2014/10/14 职场文书
2014年护士长工作总结
2014/11/11 职场文书
小升初自荐信范文
2015/03/05 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书
mysql 获取相邻数据项
2022/05/11 MySQL