编写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 相关文章推荐
Discuz 6.0+ 批量注册用户名
Sep 13 PHP
使ecshop模板中可引用常量的实现方法
Jun 02 PHP
php重定向的三种方法分享
Feb 22 PHP
php计算程序运行时间的简单例子分享
May 10 PHP
2014年最新推荐的10款 PHP 开发框架
Aug 01 PHP
php从字符串创建函数的方法
Mar 16 PHP
php递归遍历删除文件的方法
Apr 17 PHP
PHP学习笔记之php文件操作
Jun 03 PHP
golang与PHP输出excel示例
Jul 22 PHP
YII框架批量插入数据的方法
Mar 18 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
关于ThinkPHP中的异常处理详解
May 11 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
一个简单的MySQL数据浏览器
2006/10/09 PHP
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
Javascript 面向对象 命名空间
2010/05/13 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
2013/04/02 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
记录Django开发心得
2014/07/16 Python
Python实现的个人所得税计算器示例
2018/06/01 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
美国美妆网站:B-Glowing
2016/10/12 全球购物
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
平面设计的岗位职责
2013/11/08 职场文书
应届生的求职推荐信范文
2013/11/30 职场文书
入党自传范文2015
2015/06/26 职场文书