首页 » WordPress » 如何实现 WordPress 主题的 Thread Comments 功能

如何实现 WordPress 主题的 Thread Comments 功能

WordPress 从 2.7 版本新增的最大一个功能就是 Thread Comments(嵌套留言和回复),就是可以回复留言并且嵌套显示,这样非常留言的时候更加友好,可以针对日志内容留言,也可以针对某条留言回复,并且可以直接在留言中讨论而不影响其他用户,所以 WordPress 主题实现 Thread Comments 是非常必要的。

由于 WordPress 很早就在 wp_comments 数据表中预留了 comment_parent 字段,在 2.7 版本之前的实现 Thread Comments 功能的插件都是通过使用这个字段实现的,WordPress 2.7 之后自带的 Thread Comments 也不例外,也是通过这个字段实现,所以可以完全兼容之前的 Thread comments 插件。但是要使用 WordPress 2.7 自带的 Thread Comments,需要修改主题的 comments.php 主题文件,我下面就讲解下如何修改,注意这里的代码不向下兼容了,修改了之后,你的主题只能在 WordPress 2.7 或者中使用了。

1. 首先在主题的 header.phpwp_head() 函数之前添加如下函数:

if(is_singular()) wp_enqueue_script('comment-reply');

上面这个函数是在主题模板中添加 comment-reply.js 这个 JS,它是 Thread comment 正常工作和运行的基础。

2. WordPress 通过函数 wp_list_comments 来显示所有留言,并且按照 thread 形式。当然我们可以通过 callback 参数来指定一个回调函数来定义留言的样式。所以在 2.7 即之后的版本只需使用以下代码就可以来显示留言:

<ul class="commentlist">
<?php wp_list_comments(); ?>
</ul>

3. WordPress 留言还可以实现留言分页,如果你启用了留言分页功能,那么你需要在主题中添加以下代码实现留言分页导航:

<div class="navigation">
<div class="alignleft"><?php previous_comments_link() ?></div>
<div class="alignright"><?php next_comments_link() ?></div>
</div>

4. 要实现回复留言,首先需要要吧 Comment Form 放入一个 ID 为 respond 的容器中(一般为使用 DIV 就行)。然后并在 Comment form 中添加如下代码:

<?php comment_id_fields(); ?>

这段代码主要是让 Comment Form 获取一个当前 post ID (日志 ID)和 Parent comment ID(父级留言的 ID)。

5. 如果你想在回复留言的时候 Comment Form 的标题不一样。可以把 comment_form_title 函数替换成下面的函数:

<?php comment_form_title( '发表评论', '给 %s 回复' ); ?>

给 %s 回复 就是回复时候的标题,%s 是被回复者的名字。

6. 添加以下代码可以便能够取消回复:

<div id="cancel-comment-reply">
<small><?php cancel_comment_reply_link() ?></small>
</div>

对于以上函数的具体位置,你可以参考 default 主题的 comments.php 文件。下次我会讲下,在 WordPress 中如何简单把留言和 Trackbacks 分开,并且通过 Callback 函数自定义留言的格式

标签:

分享到:

30 条评论 添加你的评论 →

  • Mao 2008-11-02 00:45:45 #

    步骤还蛮多的,还不向下兼容…..那么还不如直接用插件….

    支持 反对

  • Jor 2008-11-02 00:51:11 #

    谢谢分享!起床了我试试。 :mrgreen:

    支持 反对

  • 潘大 2008-11-02 02:28:14 #

    刚装了个beta1来玩,不是说要整合google sitemap插件的么,是不是取消了?

    支持 反对

  • 轶侠 2008-11-02 07:36:05 #

    WP Thread Comment终于可以下岗了,插件列表又少一项,哈哈哈哈哈哈哈哈哈

    支持 反对

  • wuye 2008-11-02 09:12:17 #

    谢谢了!!我会一步一步照着去做的 :razz:

    支持 反对

  • 狐狸 2008-11-02 09:25:38 #

    呵呵,逛逛水煮鱼总能发现自己想要的呵呵

    支持 反对

  • !CnSoLoer 2008-11-02 10:00:01 #

    我也测试过,2.7 beta的评论回复功能在默认主题上面显示就跟一般评论一样,没有特别的样式以作区分,后台也是。

    支持 反对

  • 2008-11-02 10:12:14 #

    直接用插件不可以吗?

    支持 反对

  • Dianso 2008-11-02 13:50:09 #

    还是不能做出这个效果啊

    支持 反对

    • Denis 2008-11-02 14:27:20 #

      下次我讲下,在 WordPress 2.7 下,如何简单实现 Seprate Comments 并且通过 Callback 函数自定义留言的格式。

      请停下会分解!

      支持 反对

  • 流星 2008-11-02 14:44:27 #

    先等着,正式版出来再看情况
    插件到时候不会更新了是么?

    支持 反对

  • Jor 2008-11-02 17:13:56 #

    回复的邮件通知功能是不是还是要插件才行?

    支持2 反对

  • 小墨 2008-11-03 09:43:54 #

    simple tags不能用了。。。

    支持 反对

  • nooidea 2008-12-15 22:47:11 #

    我如何在不使用 threat comments情况下让别人能接受到我回复留言的邮件提示呢?

    支持 反对

  • 沿阶草 2008-12-29 12:46:03 #

    http://fairyfish.net/archives/ 上标题的链接为什么不是文章的链接,而是http://fairyfish.net/2008/10/ 等月份的存档?

    支持 反对

  • 瞎子 2009-04-02 23:17:20 #

    看到你在论坛里的AD了
    现在需要一款和yo2.cn类似的首页聚合模板,这个模板完全可以从yo2.cn扒下来,然后把这个模板用在一个自己简单玩的站上,是用WordPress mu2.7搭建,这个如果你能免费给我一份的话非常感激啊!

    现在还在准备把我的网站重新改版,做一个新的主题出来,网站的定位也准备改掉
    设计稿已经快做好了
    http://www.jiehunzu.com这是我目前的网站的访问地址
    她的风格会有很大的转变
    是一个社区类型的分类信息站,采用口碑营销的方式运作
    到时候模板也需要你帮忙啊,不过这个模板当然会给你酬劳的
    呵呵
    说了一大堆废话
    不知道你是否会看到
    看到我的留言后可以给我发邮件和我联系或者QQ:170217880
    我也把我的手机号直接留给你13466562436
    期待你的回复啊

    支持 反对1

  • 8suo 2009-04-12 20:31:48 #

    你写的太乱,在哪个文件中加没说清楚,而且错别字很多。

    支持1 反对

  • weweloo 2010-06-10 16:29:51 #

    试改了下,还是没有看到有回复的功能,不知道是哪没弄好。

    支持 反对

  • 水鸟飞翔 2010-11-11 15:06:26 #

    老大,回复的时候弹出回复怎么实现呢?

    支持1 反对

发表评论

你必须 登陆 之后才能留言。你可以使用以下方式快速登陆我爱水煮鱼:

使用新浪微博登陆 使用腾讯微博登陆 使用豆瓣登陆

你也可选择直接在本站 注册