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.php 的 wp_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 函数自定义留言的格式。


步骤还蛮多的,还不向下兼容…..那么还不如直接用插件….
支持 反对
恩,原来的插件还都是可以用的。
支持 反对
测试一下,不过好像比较复杂
支持 反对
谢谢分享!起床了我试试。
支持 反对
刚装了个beta1来玩,不是说要整合google sitemap插件的么,是不是取消了?
支持 反对
WP Thread Comment终于可以下岗了,插件列表又少一项,哈哈哈哈哈哈哈哈哈
支持 反对
谢谢了!!我会一步一步照着去做的
支持 反对
呵呵,逛逛水煮鱼总能发现自己想要的呵呵
支持 反对
我也测试过,2.7 beta的评论回复功能在默认主题上面显示就跟一般评论一样,没有特别的样式以作区分,后台也是。
支持 反对
需要在 setting => disscusion 启动 thread comments 功能。
支持 反对
直接用插件不可以吗?
支持 反对
也可以。
支持 反对
还是不能做出这个效果啊
支持 反对
下次我讲下,在 WordPress 2.7 下,如何简单实现 Seprate Comments 并且通过 Callback 函数自定义留言的格式。
请停下会分解!
支持 反对
先等着,正式版出来再看情况
插件到时候不会更新了是么?
支持 反对
回复的邮件通知功能是不是还是要插件才行?
支持2 反对
好像是。
支持 反对
呃,你是用什么插件实现的?
支持 反对
comment reply Notification
支持 反对
simple tags不能用了。。。
支持 反对
我如何在不使用 threat comments情况下让别人能接受到我回复留言的邮件提示呢?
支持 反对
http://fairyfish.net/archives/ 上标题的链接为什么不是文章的链接,而是http://fairyfish.net/2008/10/ 等月份的存档?
支持 反对
bug 吧,我吃点修正吧!
支持 反对
看到你在论坛里的AD了
现在需要一款和yo2.cn类似的首页聚合模板,这个模板完全可以从yo2.cn扒下来,然后把这个模板用在一个自己简单玩的站上,是用WordPress mu2.7搭建,这个如果你能免费给我一份的话非常感激啊!
现在还在准备把我的网站重新改版,做一个新的主题出来,网站的定位也准备改掉
设计稿已经快做好了
http://www.jiehunzu.com这是我目前的网站的访问地址
她的风格会有很大的转变
是一个社区类型的分类信息站,采用口碑营销的方式运作
到时候模板也需要你帮忙啊,不过这个模板当然会给你酬劳的
呵呵
说了一大堆废话
不知道你是否会看到
看到我的留言后可以给我发邮件和我联系或者QQ:170217880
我也把我的手机号直接留给你13466562436
期待你的回复啊
支持 反对1
你写的太乱,在哪个文件中加没说清楚,而且错别字很多。
支持1 反对
看不懂就直说撒!
支持 反对
好好看看吧。我看很好。
支持 反对
试改了下,还是没有看到有回复的功能,不知道是哪没弄好。
支持 反对
严格按照这个步骤来时没有问题的!
支持 反对
老大,回复的时候弹出回复怎么实现呢?
支持1 反对