最近很多朋友来博客上留言,水母在回复了一些留言后发现,最近评论模块都变成自己的留言了,要是把这些屏蔽掉就好了。
查看了下wordpress数据库中的wp_comments表,其中字段user_id即是用于标识用户的,来自访客的留言user_id=0,有了这些信息就好办了,只要在获取comments的时候传递user_id=0这个参数就可以了。
前不久水母发过一篇关于《去除最近评论中pingback和trackback评论》的文章,具体的修改方法都差不多,只不过这次换成user_id这个参数,具体的修改如下:
$comments=get_comments(array(‘number’=>$limit,‘status’=>‘approve’));
//修改为
$comments=get_comments(array(‘number’=>$limit,‘status’=>‘approve’,‘user_id’=>0));
wordpress自带的最新评论不怎么好用,很多主题都会有自带的最新评论模块,因此要修改的地方也要根据情况来定。
wordpress自带最近评论
在wordpress\wp-includes\default-widgets.php中先找到class WP_Widget_Recent_Comments extends WP_Widget,这个就是wordpress自带的显示最近评论的代码了,在这个里面找到上面要修改的代码(大约在643行),修改下即可。
主题自带最近评论
最直接简单的办法就是通过在主题目录搜索“get_comments”,辛苦下找找吧,呵呵!如果有和水母用的同一个主题的,修改这个\wordpress\wp-content\themes\istudio-theme\functions.php即可。
补充
修改完后会有个问题,就是这种方法只适用于隐藏登录后发表的回复,如果不登陆,即使用和后台管理员一样的昵称、E-mail在前台回复,依然会显示在最近评论中的,原因没有登录时候的回复写入数据库的时候user_id=0。
如果开放了注册功能的博客,上面的修改就会有局限性了,这个时候我们只能向get_comments下手了,这个函数的路径为:\wordpress\wp-includes\comment.php。
$query = new WP_Comment_Query;
return $query->query( $args );
}
在函数WP_Comment_Query中找到$query,按照下面方式修改:
$query = “SELECT $fields FROM $wpdb->comments $join WHERE $where ORDER BY $orderby $order $limits”;
//这个就是一个sql语句了,用于向数据库查询数据,将这个修改为下面两种之一
//在sql语句中加上不想显示的user_id,换成自己管理员账号的id即可
$query = “SELECT $fields FROM $wpdb->comments $join WHERE $where AND user_id<>1 ORDER BY $orderby $order $limits”;
//如果记不住ID,可以像下面这样修改,xxx换成发表评论时候的用户名
$query = “SELECT $fields FROM $wpdb->comments $join WHERE $where AND comment_author!=’xxx’ ORDER BY $orderby $order $limits”;
按照这个原理,还可以继续使用comment_author_email等字段,总之是想禁止谁就禁止谁啊!
原创文章请注明转载于知蚁博客,本文地址:http://www.letuknowit.com/archives/45
wordpress和zblog哪个主要?
没怎么接触过zblog,zbolg应该是基于ASP的,wordpress基于PHP,以后应该是用wordpress的要多些吧
来学习啦! 呵呵
欢迎!
来看看了!!!!!
欢迎来访!
google搜索到的。虽然对我的帮助不大,按时还要顶!
好荣幸啊,竟然是通过搜索来的,呵呵
使用了,奏效了,多谢分享!
刚好遇到这个问题,试试看
博主你好, 对于开放了注册功能的博客,用你的 修改方法“user_id(想禁止的用户)”,也只能针对某一人不显示。但是我们需要的是不显示作者自身的留言。而不是针对某一个人
正好想解决这个问题
终于找到了
都没有针对functions.php的方法啊,逼我用插件
知蚁,我想实现,除了登陆账号自己的评论,别人的评论都看不到,而只有我指定的用户可以看到所有评论。怎么实现?
就是只显示当前登陆用户的评论 $query = “SELECT $fields FROM $wpdb->comments $join WHERE $where AND user_id=’当前用户ID’ ORDER BY $orderby $order $limits”; 当前用户ID 的获取代码是什么?
这个我也不太清楚,在网上找了一个 http://www.cnblogs.com/golbz/archive/2010/05/07/1729526.html 你试试看
等了一天了,博主怎么还不来啊?
带孩子呢,上博客上的少了
学习了~我添加了那个User_ID=>0但是主页还是有自己的评论 不知道为什么
百度搜索到的 正需要修改这个问题 请问 //在sql语句中加上不想显示的user_id,换成自己管理员账号的id即可 是自己的用户名吗 如果管理员账号id是123 是要怎么改哦
wordpress后台左侧有个用户选项,点击进入会看到用户列表,把鼠标放到用户名上,就可以看到浏览器左下角会显示url地址(如果不行就直接点击,然后看浏览器的地址栏),这个url地址中就有user_id