编写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 中执行系统外部命令
Oct 09 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
PHP生成短网址的3种方法代码实例
Jul 08 PHP
Yii框架获取当前controlle和action对应id的方法
Dec 03 PHP
PHP中的事务使用实例
May 26 PHP
PHP使用pear自带的mail类库发邮件的方法
Jul 08 PHP
php实现点击可刷新验证码
Nov 07 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
Dec 01 PHP
laravel中的错误与日志用法详解
Jul 26 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
Sep 01 PHP
PHP钩子与简单分发方式实例分析
Sep 04 PHP
laravel 查询数据库获取结果实现判断是否为空
Oct 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
2006/12/23 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
php实现RSA加密类实例
2015/03/26 PHP
php中使用sftp教程
2015/03/30 PHP
3种php生成唯一id的方法
2015/11/23 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
AngularJS入门教程之路由机制ngRoute实例分析
2016/12/13 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
django 简单实现登录验证给你
2019/11/06 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
Python requests模块session代码实例
2020/04/14 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
党员争先创优承诺书
2015/01/20 职场文书
常住证明范本
2015/06/23 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
Nginx实现会话保持的两种方式
2022/03/18 Servers
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏