是否删除其他用户查看用户列表中的管理员的权限?

时间:2011-02-28 作者:Carlos

(Moderator\'s note: 原来的标题是“从用户菜单中删除管理员”)

我创建了一个客户端管理员角色,它本质上是一个编辑器,能够添加/删除用户。这篇文章Editor can create any new user except administrator“在帮助我的新客户管理员角色避免编辑或创建真正的管理员用户方面表现出色。

然而,理想的做法是在客户端管理员查看用户时,对其隐藏管理员。我希望他们“相信”自己是自己网站的管理员,但我不希望他们甚至能够查看我的角色/用户——实际上,当他们在“用户”面板中时,他们会隐藏“管理员”角色。

4 个回复
最合适的回答,由SO网友:MikeSchinkel 整理而成

你好@Carlos:

尝试将以下内容添加到主题functions.php 文件,或在.php 您可能正在编写的插件中的文件(适用于WordPress 3.1.x):

add_action(\'pre_user_query\',\'yoursite_pre_user_query\');
function yoursite_pre_user_query($user_search) {
  $user = wp_get_current_user();
  if ($user->ID!=1) { // Is not administrator, remove administrator
    global $wpdb;
    $user_search->query_where = str_replace(\'WHERE 1=1\',
      "WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where);
  }
}
如果你有WordPress 3.0。试试这个(因为WordPress没有添加\'pre_user_query\' 钩至3.1):

add_action(\'pre_user_search\',\'yoursite_pre_user_search\');
function yoursite_pre_user_search($user_search) {
  $user = wp_get_current_user();
  if ($user->ID!=1) { // Is not administrator, remove administrator
    global $wpdb;
    $user_search->query_where = str_replace(\'WHERE 1=1\',
      "WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where);
  }
}

SO网友:patnz

这是MikeSchinkel回答的一个mod,它检查当前用户是否具有管理员角色,如果没有,则只选择作为订阅者的用户。

add_action(\'pre_user_query\',\'yoursite_pre_user_query\');
function yoursite_pre_user_query($user_search) {
    $user = wp_get_current_user();

    if ( $user->roles[0] != \'administrator\' ) { 
        global $wpdb;

        $user_search->query_where = 
        str_replace(\'WHERE 1=1\', 
            "WHERE 1=1 AND {$wpdb->users}.ID IN (
                 SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta 
                    WHERE {$wpdb->usermeta}.meta_key = \'{$wpdb->prefix}user_level\' 
                    AND {$wpdb->usermeta}.meta_value = 0)", 
            $user_search->query_where
        );

    }
}

SO网友:Howdy_McGee

User Levels are deprecated, 因此,此方法将检查功能:

/** Hide Administrator From User List **/
function isa_pre_user_query( $user_search ) {
    if ( !current_user_can( \'administrator\' ) ) { // Is Not Administrator - Remove Administrator
        global $wpdb;

        $user_search->query_where = str_replace(
            \'WHERE 1=1\', 
            "WHERE 1=1 AND {$wpdb->users}.ID IN (
              SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta 
              WHERE {$wpdb->usermeta}.meta_key = \'{$wpdb->prefix}capabilities\'
              AND {$wpdb->usermeta}.meta_value NOT LIKE \'%administrator%\' )", 
            $user_search->query_where
        );
    }
}

add_action( \'pre_user_query\', \'isa_pre_user_query\' );

SO网友:Virgo

pre_user_query 操作可用于更改WordPress 3.1.0之后的用户查询

结束

相关推荐

在users.php中使用Manage_User_Columns显示cimy用户字段

我正在尝试向我的主题函数添加代码。php在仪表板用户中显示使用Cimy用户额外字段插件创建的字段。php。我知道我需要使用manage\\u users\\u列,但除此之外,我陷入了困境。有谁对这个插件足够熟悉,可以帮助我获得要显示的正确字段?