编写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 5.0对象模型深度探索之对象复制
Mar 27 PHP
PHP下使用CURL方式POST数据至API接口的代码
Feb 14 PHP
php json与xml序列化/反序列化
Oct 28 PHP
PHP set_error_handler()函数使用详解(示例)
Nov 12 PHP
Thinkphp中Create方法深入探究
Jun 16 PHP
php隐藏实际地址的文件下载方法
Apr 18 PHP
php数组索引与键值操作技巧实例分析
Jun 24 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
Nov 25 PHP
php中get_magic_quotes_gpc()函数说明
Feb 06 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 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 的超简单方法[转]
2007/09/24 PHP
PHP数组操作汇总 php数组的使用技巧
2011/07/17 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
js 链式延迟执行DOME
2012/01/04 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
js原型链原理看图说明
2012/07/07 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
2016/02/17 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
简单实现JavaScript图片切换效果
2016/11/28 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
2020/07/22 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
Python发送email的3种方法
2015/04/28 Python
python3实现域名查询和whois查询功能
2018/06/21 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
Python 列表的清空方式
2020/01/13 Python
python压包的概念及实例详解
2021/02/17 Python
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
车间调度岗位职责
2013/11/30 职场文书
保密普查工作实施方案
2014/02/25 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
项目采购员岗位职责
2014/04/15 职场文书
出纳试用期自我评价
2015/03/10 职场文书
教学督导岗位职责
2015/04/10 职场文书
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS