© / Posted in 知识如海 / September 19, 2009

       关于WordPress如何自制留言板,而不用插件,网上的文章已经非常多了。我之前也是参照网上的文章弄的。也就是做个模版来实现留言板。当然,然后你懒的话,不做模版了,直接用一个普通页面当留言板也成。只是留言倒序显示就不好弄了。因为后台里的设定虽然有倒序功能,但是是针对所有页面的,也就是说,你设了以后文章页的评论也倒序显示了。所以推荐自制模版来实现。而网上的制作方法在实现倒序显示和评论分页两个功能上有点冲突。下面先说说网上的制作方法,然后再说解决办法。

       步骤很简单:

        1、复制你所使用的主题下的 comments.php和single.php ,分别重命名为你想要的名字,如:guestcomment.php和guestbook.php

        2、在guestbook.php文件头部添加以下代码:
<?php
/*
Template Name: Guestbook
*/
?>
        3、修改guestbook.php里面的一句调用评论页面的代码:
              把<?php comments_template() ?>
              改为<?php comments_template('/guestcomments.php') ?>

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

         5、找到guestcomments.php里面的<?phpforeach($comments as $comment) : ?>

                替换成:<?phpforeach(array_reverse($comments) as $comment) : ?>

                 实现留言板留言倒序显示。


          到这,就是网上流传的方法了。但是对于第5步,倒序显示留言,有些新的主题里,并没有这一句代码,因为用了新的,WordPress2.7开始支持的wp_list_comments函数。我原来的主题支持2.7版本以下的,所以有这句代码。不过它加了个判断,如果是2.7版以上的,就用wp_list_comments函数。我为了实现倒序功能,就把判断去掉了。不用这个函数。

          不用wp_list_comments函数,而用模版里自带的,旧的循环查找显示评论代码,有两个缺点:一是不支持评论分页了,二是数据库查询量很大。如果你的主题里没有兼容旧版WordPress的循环查找显示评论代码,只有使用wp_list_comments函数的代码,该怎么倒序显示呢?请往下看。

          分页不行还可以接受,我的留言不多,但是数据库查询量太大了,几十个留言,数据库查询居然到了180多次…… 再加上我想实现分页功能,于是在网上寻找办法。终于被我找到了。

          官方的代码文档里找到了wp_list_comments这个函数的描述:http://codex.wordpress.org/Template_Tags/wp_list_comments

           发现,里面是有个参数reverse_top_level来选择是否倒序的,而这个参数默认是在后台获取的,也就是你在后台设置里评论上的设置,是否倒序。但是如果你指定了这个参数的值,那么就是你所指定的值优先。那么,我们就可以传参让它倒序了,而因为我们是自己制作的一个模版,所以,又不会影响到其他的文章页评论!而且,使用wp_list_comments这个函数来打印评论,在后台设置的评论分页也就起作用了!

            不说废话了,上面的第5步换为:

            5、把guestcomments.php里的<?php wp_list_comments(); ?>

            替换成<?php wp_list_comments(array("reverse_top_level"=>1)); ?>


            至此,OK了~~留言板,支持倒序显示、评论分页。而且修改后,浏览我的留言板时数据库查询量才36左右!如果还想定制其他的,也就是修改那两个增加的guestbook和guestcomment里的相关内容。比如按钮显示的文字啊之类的,随便你自己整了。

本文有 47 篇评论 ↓↓

  1. LLT LLT

    我原来用的默认模板,可是套用这个以前的留言就不显示了。囧,不管了,不显示就不显示了,反正也就弄一次。。

    1. @LLT, 呵呵,你自己再折腾下吧,我还在上班干活

  2. AnQ AnQ

    学习了,这个方法我在研究下,今天收获不少

  3. 还是看不太懂。

  4. 你介绍的这个方法很实用,谢谢。想请教下,1))
    ; ?> 与 作用一样吗?

  5. a a

    发现一个问题。。。wp_list_comments的倒序是先分页后倒序的,郁闷
    比如评论顺序是1,2,3,4,5,6,7
    现在设置成两页一个评论,倒序
    生成的顺序却是
    2 1,4 3,6 5,7
    而不是
    7 6,5 4,3 2,1

  6. newton newton

    请问 文章的评论分页是怎么实现的

  7. 我希望,它的确定

  8. 大家好!我不知道从哪里开始,但希望这个网站将是对我非常有用。

  9. 很不错的小站,大家可以多交流交流

添加新评论 ↑↑