阻止或禁用创建新用户或将现有用户的角色更改为管理员

时间:2012-02-23 作者:Arpit Jacob

我正试图通过授予编辑器角色创建用户帐户的权限来授予其更多权限。请参见下面的代码。但我想阻止它以管理员的身份创建或编辑现有用户。

function add_theme_caps() {
    $role = get_role(\'editor\');
    $role->add_cap( \'edit_theme_options\' );
    $role->add_cap(\'list_users\');
    $role->add_cap(\'create_users\');
    $role->add_cap(\'delete_users\');
    $role->add_cap(\'edit_users\');
}
add_action( \'admin_init\', \'add_theme_caps\');
我正在努力实现的事情。

list\\u users选项列出所有用户。我只想列出非管理员用户

  • 我想限制此角色使用管理员角色创建新用户帐户,并防止其将任何现有用户的角色更改为管理员
  • 1 个回复
    SO网友:kaiser

    对于用户来说,这是最重要的事情之一:

    /**
     * Deny access to \'administrator\' for other roles
     * Else anyone, with the edit_users capability, can edit others
     * to be administrators - even if they are only editors or authors
     * 
     * @since   0.1
     * @param   (array) $all_roles
     * @return  (array) $all_roles
     */
    function deny_change_to_admin( $all_roles )
    {
        if ( ! current_user_can(\'administrator\') )
            unset( $all_roles[\'administrator\'] );
    
        if ( 
            ! current_user_can(\'administrator\')
            OR ! current_user_can(\'editor\')
        )
            unset( $all_roles[\'editor\'] );
    
        if ( 
            ! current_user_can(\'administrator\')
            OR ! current_user_can(\'editor\')
            OR ! current_user_can(\'author\')
        )
            unset( $all_roles[\'author\'] );
    
        return $all_roles;
    }
    function deny_rolechange()
    {
        add_filter( \'editable_roles\', \'deny_change_to_admin\' );
    }
    add_action( \'after_setup_theme\', \'deny_rolechange\' );
    

    结束

    相关推荐

    Recommended File Permissions

    嘿,伙计们,我花了很长时间试图解决这个问题。我想知道WordPress中的文件权限应该是什么样子in order to use the autoupdate feature. 到目前为止,我的wordpress安装程序一直在询问我的FTP信息,我不想使用那种升级/安装方法,我想使用纯/直接PHP。某些上下文:Web服务器和php fcgi守护程序运行为www-data:www-data</wordpress安装位于/home/blaenk/sites/domain.tld/</首先,我read