从用户列表中的“Change Role to”菜单中删除管理员和编辑者

时间:2015-05-28 作者:Ismael Latorre

我的函数中有一个片段。php从用户列表屏幕的“将角色更改为”下拉菜单中删除管理员角色,这样可以列出用户和管理角色的编辑器将无法将其他用户转换为管理员。下面的代码工作正常。

function isa_pre_user_query($user_search) {
$user = wp_get_current_user();
  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\');
现在,我的问题是,如何从下拉列表中删除编辑器角色,以便编辑器无法创建其他编辑器?我想从下拉菜单中删除Admin和Editor角色,并将角色选择仅限于Author、Contributor和Subscriber。

有什么想法吗?

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

尝试使用以下代码从下拉列表中删除管理员和编辑器选项。使用editable_roles 滤器

function wdm_user_role_dropdown($all_roles) {

    global $pagenow;

    if( current_user_can(\'editor\') && $pagenow == \'user-edit.php\' ) {
        // if current user is editor AND current page is edit user page
        unset($all_roles[\'administrator\']);
        unset($all_roles[\'editor\']);
    }

    return $all_roles;
}
add_filter(\'editable_roles\',\'wdm_user_role_dropdown\');

结束

相关推荐

通过admin-ajax.php进行的AJAX调用返回404错误

目前,我正在尝试执行一个非常基本的AJAX请求,只是为了测试功能,通过管理AJAX路由我的调用。php。然而,每次我尝试触发AJAX请求时,都会收到一个404错误,上面写着“未捕获的语法错误:意外的标记<;”。Wtf?这似乎是因为我的DTD中的carot。。。我已经检查了我的代码,但不知道我在这里做错了什么。。。我对AJAX的工作还比较陌生,所以如果有任何帮助,我将不胜感激。函数中的php。php什么都不是。。。function shows_callback(){ echo \'<