wordpress限制具有较低角色权限的用户的用户视图

时间:2018-04-23 16:32:57

标签: php wordpress roles wordpress-rest-api

我无法在此找到插件或任何信息。认为这应该很简单。我希望用户能够看到用户列表,但只让它显示相同或较小角色的用户。

例如,

管理员可以查看所有用户 编辑可以看到作者和贡献者 作者作者只能看到贡献者 贡献者只看到订阅者

我添加了一些自定义角色,因此我的实际实现将在WP角色库存

之上

管理员所有用户 经理(自定义角色)只能看到审阅者和业务 Reviewer(自定义角色)只能开展业务。 业务(自定义角色)无法访问用户列表(我已经开始工作了)。

1 个答案:

答案 0 :(得分:0)

这是有效的,它不是我想要的,因为它只是删除/隐藏特定用户而不是用户组。我将继续努力,并在我有一段时间时尝试重写它以隐藏组。

add_action('pre_user_query','dt_pre_user_query');
function dt_pre_user_query($user_search) {
   global $current_user;
   $username = $current_user->user_login;

   if ($username != 'hiddenuser') {
      global $wpdb;
      $user_search->query_where = str_replace('WHERE 1=1',
         "WHERE 1=1 AND {$wpdb->users}.user_login != 'hiddenuser'",$user_search->query_where);
   }
}

add_filter("views_users", "dt_list_table_views");
function dt_list_table_views($views){
   $users = count_users();
   $admins_num = $users['avail_roles']['administrator'] - 1;
   $all_num = $users['total_users'] - 1;
   $class_adm = ( strpos($views['administrator'], 'current') === false ) ? "" : "current";
   $class_all = ( strpos($views['all'], 'current') === false ) ? "" : "current";
   $views['administrator'] = '<a href="users.php?role=administrator" class="' . $class_adm . '">' . translate_user_role('Administrator') . ' <span class="count">(' . $admins_num . ')</span></a>';
   $views['all'] = '<a href="users.php" class="' . $class_all . '">' . __('All') . ' <span class="count">(' . $all_num . ')</span></a>';
   return $views;
}