快乐不是因为拥有的多而是因为计较的少

WordPress自制留言板并实现倒序、分页功能

技术文档 38987浏览 0评论

关于WordPress如何自制留言板,而不用插件,网上的文章已经非常多了。我之前也是参照网上的文章弄的,也就是做个模版来实现留言板。直接用一个普通页面当留言板也成,只是留言不能按照倒序显示。
后台管理里的设定虽然有倒序功能,但是是针对所有页面的,也就是说,你设置了按照倒序显示以后,文章页的评论也倒序显示了。这个就有点不太好了。所以推荐自制模版来实现。而网上的制作方法在实现倒序显示和评论分页两个功能上有点冲突。网上的解决办法步骤如下:
1、复制你所使用的主题下的 comments.php和single.php ,分别重命名为你想要的名字,如:gbcomments.php和guestbook.php
2、在guestbook.php文件头部添加以下代码:

<?php
/*
Template Name: Guestbook
*/
?>

3、修改guestbook.php里面的一句调用评论页面的代码:
把<?php comments_template() ?>改为

<?php comments_template('/guestcomments.php',true) ?>

4、新建页面,选择模版Guestbook,OK,到这步为止,和你新建一个普通页面没有什么不同,那么,下面就是对这个留言板的定制部分了

5、找到gbcomments.php里面的<?php foreach ($comments as $comment) : ?>替换成:

<?php foreach (array_reverse($comments) as $comment) : ?>

实现留言板留言倒序显示。到这,就是网上流传的方法了。
但是对于第5步,倒序显示留言,现在新的主题里,并没有这一句代码,而大多采用<?php wp_list_comments('type=comment&callback=mytheme_comment');?>来实现评论的分页嵌套调用。
因为从WordPress2.7起开始支持wp_list_comments函数。不用wp_list_comments函数,而用模版里自带的旧的循环查找显示评论代码,有两个缺点:一是不支持评论分页了,二是数据库查询量很大。

官方的代码文档里有wp_list_comments这个函数的描述:http://codex.wordpress.org/Template_Tags/wp_list_comments,里面是有个参数reverse_top_level来选择是否倒序的,而这个参数默认是在后台获取的,也就是你在后台设置里评论上的设置,是否倒序。但是如果你指定了这个参数的值,那么就是你所指定的值优先。那么,我们就可以传参让它倒序了,而因为我们是自己制作的一个模版,所以,又不会影响到其他的文章页评论!而且,使用wp_list_comments这个函数来打印评论,在后台设置的评论分页也就起作用了!
因此可以将上面的第5步进行修改,从而实现分页嵌套显示以及倒序排列的功能:
5、把gbcomments.php里的<?php wp_list_comments(); ?>
替换成

<?php wp_list_comments('reverse_top_level=1&type=comment&callback=mytheme_comment');?>

至此,这个留言板,就支持倒序显示、评论分页。

参考:http://vlrat.cn/archives/359/comment-page-1

转载请注明:自由的风 » WordPress自制留言板并实现倒序、分页功能

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (7)

  1. 多谢教程,但是我自己做出来的留言板有个问题,好像不与主题兼容,因此就变成了和主页主题不一样的一个空白页面,链接地址:
    http://andi0523.x10hosting.com/page_id143

    能否求解。。。

    Amethy2010-01-16 11:41 回复
  2. 加上了< ?php get_header(); ?>
    < ?php include_once("sidebar_page.php"); ?>
    < ?php get_footer(); ?>
    这些标签么?

    自由的风2010-01-16 20:58 回复
  3. 我的主题那段是这样的,应该怎样修改呢(怕被误认为垃圾评论就去掉)
    div id=”comments_wrap”
    ol class=”commentlist”
    ?php wp_list_comments(‘avatar_size=48&callback=custom_comment’); ?
    /ol

    leo2010-01-17 20:51 回复
  4. 用这个方法是实现了倒叙 可以没法实现分页显示啊 好像这个代码中没写有分页显示啊 还是我主题的问题???

    Stuart2011-01-26 15:59 回复
  5. @Stuart
    分页的你得另外处理。

    自由的风2011-01-26 16:56 回复
  6. google搜索到的。虽然对我的帮助不大,按时还要顶!

    DH2011-07-18 15:14 回复