编写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 相关文章推荐
初学者入门:细述PHP4的核心Zend
Sep 05 PHP
PHP按行读取文件时删除换行符的3种方法
May 04 PHP
php+memcache实现的网站在线人数统计代码
Jul 04 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
Sep 25 PHP
php生成验证码函数
Oct 20 PHP
php连接微软MSSQL(sql server)完全攻略
Nov 27 PHP
php简单随机字符串生成方法示例
Apr 19 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
Aug 05 PHP
php设计模式之适配器模式原理、用法及注意事项详解
Sep 24 PHP
php优化查询foreach代码实例讲解
Mar 24 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删除非空目录的函数代码小结
2013/02/28 PHP
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
jQuery技巧总结
2011/01/01 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
2016/01/28 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
python中执行shell命令的几个方法小结
2014/09/18 Python
Python可跨平台实现获取按键的方法
2015/03/05 Python
Python正则表达式分组概念与用法详解
2017/06/24 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
Python中zip函数如何使用
2020/06/04 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
护理专业学生职业生涯规划范文
2014/03/11 职场文书
我的画教学反思
2014/04/28 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
Go 语言结构实例分析
2021/07/04 Golang