June 27, 2007
wordpress的评论是一个平板式的结构, 为此很多开发者开发了让wordpress的评论阅览起来更加清晰明了的插件, 包括 Brian’s Threaded Comments — thread comments(评论回复插件)、 Quoter – quote comments(评论引用插件)、 Quote Comment – another quote comments(另一款评论引用插件)【注:这里还有关于它的介绍“ Quote Comment plug-in added ”】。
关于这几款插件, 我在这里“ 让wordpress归类显示评论 ”说过了, 这里我要介绍一下WP Thread Comments这个插件。
WP Thread Comments 这个插件是我自己写的, 起因是 Brian’s Threaded Comments 使用太过麻烦, 配合模板不易因此本着偷懒的精神, 写了这个插件。
评论回复插件在回复的时候没有太大的变化, 只是在 wordpress 的 comments 数据表的 comment_parent 字段中写入父评论的 comment_ID 就可以了, 关键的一点是显示的时候要把子评论显示在父评论下。
要做到这一点有两个方法, 一个是利用 wordpress 的 comments_array 的filter, 在评论从数据库中取得, 但未显示前将 comments 数组内容重新排序, 输出的数序不再是按照评论ID排序, 而是按照 ID+父子评论关系排序, 这样最后到模板 comments.php 中 foreach($comments as $comment) 的时候就是子评论显示在父评论下了, 这个时候你要将子评论显示的跟父评论有所区别, 直接修改模板中 foreach 之间的内容就可以了, 根据 $comment->comment_parent == 0 就可以来判断是父评论还是子评论, 然后决定各自的显示方式, 这种方法可以实现任何你想要的格式, 而且显示起来比较完美, 而且插件写的也较简单, 运行速度快; 但缺点就是需要修改模板, 不过模板修改起来不算很复杂, 实在不想修改模板, 也就跟平常的输出一样, 就是顺序变了而已。
方法二就是 wp thread comments 采用的, 在每个父评论显示的时候 hook wordpress 的 get_comment_text filter, 然后在中间插入子评论。 但由于 wordpress 的 comments 变量不是一个全局变量(没有想明白为什么不把这个变量作为一个全局变量), 为避免子评论重复显示, 必须在此之前 hook comments_array filter, 把 comments 中子评论全部去除。 这样插件看起来就复杂很多, 不过对模板来说很好, 可以免除修改模板的麻烦。
WP Thread Comments 插件的使用很简单, 只要上传wp-thread-comments文件夹到wp-content/plugins下, 然后激活就可以了。
不过由于在点击“ [回复此评论] ”的链接时, 需要把评论输入框移动到当前位置, 所以需要把评论输入框的div id写到 wp-thread-comments.js 的moveAddCommentBelow()中, 我现在写的div id是”addcomment”, 把这个值改成你自己的div id就可以了!
对于使用某些模板的同志, 因为评论输入框在上移之后由于评论显示区域<原先的评论输入框, 会导致输入框外移, 这个时候只要使用 changeCommentSize() 函数改变框的大小就可以了。
这个插件目前刚开始运行, 连后台的配置对话框也没有写, 所以所有的修改都需要在源代码中进行。
好了, WP Thread Comments介绍完了, 如果你也想试试, 可以点这里下载WP Thread Comments。 如果您有什么好的意见或建议, 欢迎在下面留言。
WP Thread Comments 中很多的函数来源于 Brian’s Threaded Comments , 在此说明, 并感谢Brian Meidell 。
您喜欢本文吗?即刻订阅"偶爱偶家",精彩文章不再错过!现在就给我们留个话吗?


47 responses to "WP Thread Comments给评论添加回复"
我要测试一下,发这种插件貌似大家都喜欢测试……
[Reply]
这个是回复~
注意看下面的“点击取消回复此评论.”,有提示了
[Reply]
我也回复你一个
[Reply]
test 啊 test
[Reply]
试下效果~
[Reply]
测试一下,顺便问个问题,那个id是不是就是这个id=”comment”
我的评论模板是这样的:
然后替换这个括号里的”comment”对吗?
var addComment = document.getElementById(”comment”);
可是为什么我回复别人的评论后会提示“错误: 请输入评论。”啊?
[Reply]
试试看
[Reply]
不错的插件!!已经装上了
[Reply]
貌似很乱,不知道哪个是父,哪个是子。能不能用框圈起来?
[Reply]
测试一下啊
[Reply]
貌似我也要测试一下下!
哈哈
[Reply]
嗯,插件还是有点好处的
[Reply]
试试看效果。
[Reply]
看上去不错,简单适用
[Reply]
我也来测试,:)
[Reply]
回复上面自己的评论
[Reply]
再次回复,顺便通知“偶家”, 评论和回复评论的ajax comment功能都正常:)
---
也就是我自己的1评论2回复在15min内都可编辑。
[Reply]
不错的插件,赞一个~
[Reply]
删除父级评论后,后面的没显示,但是还是在数据库里面
建议给予显示或者写一个后台界面,专门清理这种数据?
[Reply]
是的, 删除父评论后子评论应该已经失去了原本的意义, 所以我想了想还是不显示的好. 但后台的编辑留言的地方依然会显示的. 只不过我还没有找到如何让子评论显示的跟父评论不一样, 已方便编辑. 要不在删除父评论的时候直接删除子评论? 还是直接把子评论升级到父评论? 不知道哪一个更好些
[Reply]
直接删除似乎有点点不友好,一般情况下我们是不会删除留言的,除非是spam,所以都差不多了。
[Reply]
那倒是, 不过如果删除了父评论, 子评论一般意义上来说就是没有意义了的. 所以这个这么处理还可以再考虑一下, 也欢迎大家继续提想法
[Reply]
div id这个怎么看啊?在哪个文件里啊?非常想用这个插件。。
[Reply]
div id这个在你的模板下的comments.php文件中, 可以在里面找到留言部分的id, 记录该ID, 然后把它粘帖到wp-thread-comments.js 的moveAddCommentBelow()中覆盖addcomment就可以了
[Reply]
试试
[Reply]
自己试试
[Reply]
唉。。试用了下,可惜在我那里不是特别美观,只好割爱
[Reply]
外观不好自己改改就可以了呀, 就在那个wp-thread-comments.php中. 查找”回复”就可以找到了
[Reply]
试试看,请删除
[Reply]
下了你修改的WP Thread Comments调试时,弹出个错误消息框,如下:
ERROR:
Threaded Comments can’t find the ‘ addcomment’ div.
This is probably because you have changed
the comments.php file.
Make sure there is a tag tag around the form
that has the id ‘ addcomment’
无法[回复此评论],这样的事如何解决!
[Reply]
ldq, 你这个问题跟楼上的问题是一样的, 需要在你的模板下的comments.php文件中, 可以在里面找到留言部分的id, 记录该ID, 然后把它粘帖到wp-thread-comments.js 的moveAddCommentBelow()中覆盖addcomment就可以了. 或者你可以在留言的部分加入一个div让它成为addcomment也可以
[Reply]
不行啊,在留言的部分加入一个还是不行。。。。。
[Reply]
请下载最新的版本, 最新的版本可以自动侦测您的留言部分的ID, 直接在后台进行一次设置就可以了
[Reply]
感谢啊,看了很久终于还是看不懂的

我查看了这篇文章的源文件才知道
至于你说的”可以在里面找到留言部分的id“不知道要怎么找的
还好成功了
[Reply]
请问站长的,留言下面的“管理你的订阅 ”这个要怎么做的?请教 fchjian@gmail.com
[Reply]
我试用这个插件 子评论没有显示在父评论下 但是你这文章里面写得太深奥了…我只会装和删 修改模板的话不借助外人的帮助显然是不可能 你那第二种方法我看不懂…
[Reply]
第二种方法就是我的插件用的方法.
[Reply]
看不懂…
[Reply]
管理员你好,我希望只有博主(管理员)才能回复评论,请问要怎样修改源代码?
[Reply]
这个倒是我没有考虑过的问题, 因为管理员有直接编辑评论的权限, 不需要这么麻烦了, 而评论回复为的就是给普通留言者一个机会, 如果真的需要加, 你可以参考一下wp ajax edit comments的代码, 它里面涉及了权限的控制
[Reply]
来看看现在wp thread comments 展示的回复评论还是蛮舒服的吧?
[Reply]
又弄了一个新版出来, 先测试一下先.
[Reply]
我也测试
[Reply]
留言未显示可能是系统误杀,我们将为你恢复,不必重复留言
[Reply]
Wordpress建站日誌…
WordPress是最热门的开源个人信息发布系统(Blog)之一,基于PHP+MySQL构建。 WordPress是一个功能非常强大的博客系统,插件众多,易于扩充功能.安装和使用都非常方便.目前WordPress已经成为主流的Blog搭…
[...] 该插件的最原始版本和样子可以看这里(目前已经没有下载了)–“WP Thread Comments给评论添加回复”, 插件除了一个增加功能外, 还应该提倡傻瓜型, [...]
我从wp官网上下载了一个但是不管用,到这里来看了看,原来是管网的压缩包中的一个文件错了!!!!!!!!!!!1
[Reply]