编写PHP脚本来实现WordPress中评论分页的功能
方法说明
首先来看看可能被用到的方法.打开文件wp-includes/link-template.php你会发现WordPress2.7多了4个针对评论分页的方法:
- get_comments_pagenum_link
- $pagenum:页码
- $max_page:最大页数
返回链接地址.在本次应用中不会被用到,但大家应该知道有这个方法,将方便你制作插件.
next_comments_link
$label:显示的字样,默认是»NewerComments.但我一直认为这是bug,应该是NewerComments»吧?
$max_page:最大页数
显示跳转到下一页的链接.
previous_comments_link
$label:显示的字样,默认是«OlderComments.
显示跳转到上一页的链接.
paginate_comments_links
$args:字符串参数组
-base:页面URL
-format:我也不知道是什么.谁能告诉我?
-total:最大页数
-current:当前页码
-echo:是否显示,默认为显示.不显示时返回字符串HTML.
-add_fragment:hash,默认是#comments.为求统一,方便理解,也免得修改,建议制作主题时评论部分用id="comments"
显示评论分页或返回评论分页的HTML.
实例说明
1.上一页和下一页
这是最简单,也是最常被提到的,效果与文章分页没什么两样.
<divid="commentnavi">
<spanclass="floatleft"><?phpprevious_comments_link(__('«OlderComments'))?></span>
<spanclass="floatright"><?phpnext_comments_link(__('NewerComments»'))?></span>
<divclass="fixed"></div>
</div>
2.导航式分页
对访客最透明,使用起来最方便的,效果与使用WP-PageNavi分页的效果相仿.
<divid="commentnavi"> <?phppaginate_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){
?>
<divid="commentnavi">
<spanclass="floatleft"><?phpprevious_comments_link(__('«OlderComments'))?></span>
<spanclass="floatright"><?phpnext_comments_link(__('NewerComments»'))?></span>
<divclass="fixed"></div>
</div>
<?php
}
}
?>
4.导航式分页(改进)
<?php
//如果用户在后台选择要显示评论分页
if(get_option('page_comments')){
//获取评论分页的HTML
$comment_pages=paginate_comments_links('echo=0');
//如果评论分页的HTML不为空,显示导航式分页
if($comment_pages){
?>
<divid="commentnavi">
<?phpecho$comment_pages;?>
</div>
<?php
}
}
?>
对于最新的评论分页功能,我有点自己的看法,也随便说一下吧.
评论分页并不完美.如果外面某个链接转跳到http://www.example.com/#5630,但是编号为5630的评论并不在第一页,那么就无法定位到这条评论上面,转跳过来的兄弟的感觉会比较不爽.
另外,WordPress的评论分页不是AJAX应用(为浏览器的兼容性考虑,以后也不太可能是),所以翻页会相当耗时.所以我建议,就算要分页,也要将每页显示的评论数设大一点.30?50?100?因博而异.
好了,大概你已经知道该怎么使用了?CSS就不多说了,各有所好嘛,这个不好说.