编写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 将bmp图片转为jpg等其他任意格式的图片
Jun 21 PHP
PHP下使用CURL方式POST数据至API接口的代码
Feb 14 PHP
php笔记之:有规律大文件的读取与写入的分析
Apr 26 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
php基于session实现数据库交互的类实例
Aug 03 PHP
微信公众号开发之文本消息自动回复php代码
Aug 08 PHP
CI框架中类的自动加载问题分析
Nov 21 PHP
PHP使用curl函数发送Post请求的注意事项
Nov 26 PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
Oct 16 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 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
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
php类中private属性继承问题分析
2012/11/01 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
PHP微信支付开发实例
2016/06/22 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
一个基于jquery的图片切换效果
2010/07/06 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
jQuery中prevAll()方法用法实例
2015/01/08 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
微信小程序使用map组件实现解析经纬度功能示例
2019/01/22 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
Python的randrange()方法使用教程
2015/05/15 Python
python Crypto模块的安装与使用方法
2017/12/21 Python
python实现简单图片物体标注工具
2019/03/18 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
Python多线程获取返回值代码实例
2020/02/17 Python
django实现日志按日期分割
2020/05/21 Python
python两个list[]相加的实现方法
2020/09/23 Python
苹果美国官方商城:Apple美国
2016/08/24 全球购物
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
授权委托书公证
2014/09/14 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
结婚十年感言
2015/07/31 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书