在维护一个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的插件机制,给后期的自定义提供了很大的舞台;这只是外贸网站模板花了一些时间查看源码后得出的答案,也可能另有更佳的解决方案;还望多多拍砖与交流。
(责任编辑:最模板) |