在维护一个WordPress站点时,可能您邀请了很多投稿人、作者,来丰富您站点的内容;但您并不需要他们来维护后台一些日常事项,比如说评论的审批、垃圾评论的删除等动作。
而后台评论管理界面中,实际上不管登录用户是什么角色,都可以看到待审的评论,被标记为垃圾的评论。
那该如何限制用户的显示内容呢?这里节选一段我在百度知道里的原创回答,供参考:
wordpress怎么让注册用户不显示待审核的评论?
wordpress怎么让注册用户不显示待审核的评论?审核通过的可以显示,垃圾评论也不显示,回收站只显示自己的评论!
以下是我的回复:
按您的要求,除administrator外,都是注册用户,所以可以在当前皮肤的functions.php中做如下判断:
if ( ! is_super_admin() ){//非管理员 //blablabla... }
然后将待审、垃圾评论、已回收的评论信息不显示。这可以对get_comments函数提供的pre_get_comments钩子进行设置,比如:
add_action( 'pre_get_comments', 'dit_hide_some_comments', 999 ); function dit_hide_some_comments( $comments ){ $comments->query_vars['status'] = 'approve'; //获取评论信息时只显示已审核批准的。 return $comments; }
这时如果注册用户查看回收站时,又要只能显示当前用户自己的。所以还要增加点判断
function dit_hide_some_comments( $comments ){ $status = $comments->query_vars['status']; if ( 'trash' == $status ) {//当用户选择显示回收站时,将ID添加进筛选条件 global $current_user; $comments->query_vars['user_id'] = $current_user->ID; }else { $comments->query_vars['status'] = 'approve'; //获取评论信息时只显示已审核批准的。 } return $comments; }
所以,最后放在functions.php中的代码片段整合如下:
if ( ! is_super_admin() ){//非管理员 add_action( 'pre_get_comments', 'dit_hide_some_comments', 999 ); function dit_hide_some_comments( $comments ){ $status = $comments->query_vars['status']; if ( 'trash' == $status ) {//当用户选择显示回收站时,将ID添加进筛选条件 global $current_user; $comments->query_vars['user_id'] = $current_user->ID; }else { $comments->query_vars['status'] = 'approve'; //获取评论信息时只显示已审核批准的。 } return $comments; } }
WordPress的插件机制,给后期的自定义提供了很大的舞台;这只是我花了一些时间查看源码后得出的答案,也可能另有更佳的解决方案;还望多多拍砖与交流。
标题所讲“限制用户的显示内容”代表着还有更进一步的需求,比如限制用户只能看到自己发表的日志所获得的评论?具体可移步参考:Restricting users to seeing only comments on their posts in admin