编写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 download.php实现代码 跳转到下载文件(response.redirect)
Aug 26 PHP
PHP JSON 数据解析代码
May 26 PHP
php中存储用户ID和密码到mysql数据库的方法
Feb 06 PHP
PHP array_multisort() 函数的深入解析
Jun 20 PHP
ThinkPHP分组下自定义标签库实例
Nov 01 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
PHP进程同步代码实例
Feb 12 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
May 09 PHP
php并发加锁示例
Oct 17 PHP
PHP写API输出的时用echo的原因详解
Apr 28 PHP
Laravel框架实现即点即改功能的方法分析
Oct 31 PHP
laravel入门知识点整理
Sep 15 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-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
PHP file_exists问题杂谈
2012/05/07 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
js获取页面description的方法
2015/05/21 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
HTML5新增元素如何兼容旧浏览器有哪些方法
2014/05/09 HTML / CSS
狗狗玩具、零食和咀嚼物的月度送货服务:Super Chewer
2018/08/22 全球购物
数据库的约束含义
2012/09/09 面试题
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
软件工程专业推荐信
2013/10/28 职场文书
医药营销个人求职信
2014/04/12 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
大专生自荐书范文
2014/06/22 职场文书
政协委员个人总结
2015/03/03 职场文书
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers