Type My Life刚开张不久,来捧场的好友都留了言,我当然得回复一下。不过,一阵回复后才发觉,WordPress侧边栏自带的最新评论功能太简陋了,不符合实际使用要求。
具体问题如下:
1)所有留言的具体内容都不会显示出来。默认显示格式为:“读者ID”+“在”+“具体文章名”+“上的评论”。
2)作者(站长)自己的留言也会显示出来。这样一来,当作者连续回复时,最新评论就都是作者自己的留言了,这个模块就丧失了其应有的功能。
针对以上两个问题,处理方法也不少,有使用插件的(如WP-RecentComments),也有修改代码的。按照我的习惯,不太复杂的改动尽量不使用插件,以免拖累网站运行速度。因此,本文将介绍如何通过修改代码来解决以上问题。
1)让最新留言的具体内容直接显示出来
进入你的网站根目录,在WordPress源程序文件夹中的/wp-includes/路径下找到default-widgets.php,打开编辑之。
搜索到以下代码片段:
foreach ( (array) $comments as $comment) {
$output .= ‘<li>’ . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x(‘%1$s on %2$s’, ‘widgets’), get_comment_author_link(), ‘<a href=”‘ . esc_url( get_comment_link($comment->comment_ID) ) . ‘”>’ . get_the_title($comment->comment_post_ID) . ‘</a>’) . ‘</li>’;
}
修改步骤一:
把(_x(‘%1$s on %2$s’, ‘widgets’)里面的这个单词“on”改成冒号“:”。
修改步骤二:
把get_the_title($comment->comment_post_ID)改为mb_strimwidth(strip_tags($comment->comment_content),0,50, 。。。》)。 这里的数字“50”是用来限制评论显示的字数,可以自行修改,至于后边那个小尾巴”。。。》”则是用来在实际评论字数少于允许显示的字数时补充空白处的,也可以依自己喜欢的格式修改之。
以上修改完成后,最新评论的格式就变为:“读者ID”+”:”+“实际评论内容”。
2)让最新评论不显示作者自己的评论
修改对象依然是上面提到的default-widgets.php文件。
搜索到以下代码片段:
$comments = get_comments( apply_filters( ‘widget_comments_args’, array( ‘number’ => $number, ‘status’ => ‘approve’, ‘post_status’ => ‘publish’ ) ) );
修改为以下格式:
$comments = get_comments( apply_filters( ‘widget_comments_args’, array( ‘number’ => $number, ‘status’ => ‘approve’, ‘post_status’ => ‘publish’, ‘type’ => ‘comment’, ‘user_id’ => 0 ) ) );
解释一下:’user_id’ => 0效果为不显示站长自己的回复,’type’ => ‘comment’效果为只显示评论类留言,即,不显示pingback和trackback类留言。
【参考文章】
Update: 2013-08-11 本文内容经测试对WordPress 3.6版本仍有效,其他版本不保证效果。
表示相当膜拜…… 恭喜,你已被授予“IT小博士”称呼~
略懂而已,你懂的,哈哈~
你好,我找到的代码是这样的
$comments = get_comments( array( ‘number’ => $number, ‘status’ => ‘approve’, ‘post_status’ => ‘publish’ ) );
我修改成了这样
$comments = get_comments( array( ‘number’ => $number, ‘status’ => ‘approve’, ‘user_id’ => 0 ) );
没见有变动?请问是哪里出错了?
我查看了一下,可能是版本更新后有所变动,应该改成
$comments = get_comments( array( ‘number’ => $number, ‘status’ => ‘approve’, ‘post_status’ => ‘publish’, ‘type’ => ‘comment’, ‘user_id’ => 0 ) );
谢谢啊,找了很久,还是你这里最全,修改成功了。按照他们做的都不成功~
谢谢教程!试了之后基本都成功了,就是改成这样后后面的小尾巴没显示出来
$output .= ”;
if ( $comments ) {
foreach ( (array) $comments as $comment) {
$output .= ” . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x(‘%1$s : %2$s’, ‘widgets’), get_comment_author_link(), ‘comment_ID) ) . ‘”>’ . mb_strimwidth(strip_tags($comment->comment_content),0,50, 。。。》) . ‘‘) . ”;
}
这是为什么呢……
您贴上来的跟我的不太一样呀,我的最终修改效果如原文底部所示。
仅仅会复制粘贴……的表示为什么之前评论粘贴的内容和我原本的不太一样……
$output .= ”;
if ( $comments ) {
foreach ( (array) $comments as $comment) {
$output .= ” . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x(‘%1$s : %2$s’, ‘widgets’), get_comment_author_link(), ‘comment_ID) ) . ‘”>’ . mb_strimwidth(strip_tags($comment->comment_content),0,50, 。。。》) . ‘‘) . ”;
}
}
$output .= ”;
$output .= $after_widget;
最终效果那个粘贴了一下博客就整个消失了oo
呃,可能是代码直接贴上来会被转义,就好像不能直接在日志中贴代码一样(最好是在html界面下编辑)。
唉!为啥就没有在functions.php里加代码实现的方法呢,这方法如果升级程序不是完了
改动了代码,肯定要备份和做好标记啦~
嗯,我昨晚终于找到了篇文章顺利的解决了问题。
这是原文链接给你做个参考http://www.allenle.com/archives/945.html
Mark备用,感谢分享~
感谢博主,我成功了
贵站使用版权声明:署名-非商业性使用-禁止演绎 | Creative Commons BY-NC-ND 3.0
我不能引用或转载文章吗
可以呀~不过我并不提倡全文转载,因为原文可能会有更新。
谢谢博主,使用了博主提供的方法
博主你好,如何把最新评论改成 只显示评论内容,不显示评论者ID
貌似我没看过有这种效果的,帮不到你……
谢谢!问题已经解决,可能是我问题没说清楚吧,我的意思是“近期评论”中去除评论者的链接。
岂不是只加上’user_id’ => 0就可以了吗?
可以啊,再加上’type’ => ‘comment’只是为了不显示pingback和trackback类留言。
已经把示pingback和trackback都取消了。。。
还要加代码呀。好复杂呢
后来我用了第三方评论系统(多说),不用系统自带的侧边栏评论了,也能实现类似效果,无需修改代码。
高手,收下了,谢谢。哈哈哈
客气了~
我也成功了,感谢博主。
不错不错~
客气了~~
新版文件位置变了,按照原文进行修改500错误;
按照评论中的方法修改成功
嗯嗯,感谢反馈~原文有写明适用版本,后续WP有更新的话估计就不适用了。
困扰我很久的问题今天解决了,非常感谢,成功了。
很高兴能帮到您~
非常麻烦哪
博主,请问怎么让这个修改下显示评论头像啊?