仅针对特定角色在管理中自定义CSS

时间:2016-11-07 作者:CalvT

我希望在管理员中只为某个用户角色(确切地说是“贡献者”)应用自定义CSS。

我尝试的每件事要么没有效果,要么产生500个错误。

我所尝试的主要是基于以下内容:

add_action(\'admin_head\', \'custom_admin_css\');

function custom_admin_css( ){

global $user;

if (isset($user->roles)  && is_array( $user->roles ) ) {

    if( $user->roles[0] == \'administrator\' ) {
        //Do something
    } elseif ( $user->roles[0] == \'editor\' ) {
        //Do something
    } elseif ( $user->roles[0] == \'contributor\') {
        echo \'<style> CSS </style>\';
    } else {
        //Do something
    }
}
}

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

根据要求,我将使用类似问题建议答案中的函数编写答案:How to target with css, admin elements according to user role level?.

此函数将向表单中当前用户的所有角色的body元素输出类role-XXXXX

function wpa66834_role_admin_body_class( $classes ) {
    global $current_user;
    foreach( $current_user->roles as $role )
        $classes .= \' role-\' . $role;
    return trim( $classes );
}
add_filter( \'admin_body_class\', \'wpa66834_role_admin_body_class\' );
现在可以使用css规则将角色作为目标,如:

#targetElement { 
    display: none; 
}
.role-editor #targetElement { 
    display: visible; 
}
这些CSS规则不必有条件地输出。例如,它们可以放置在通过以下方式包含的任何CSS文件中admin_enqueue_scripts 措施:

function wp245372_admin_enqueue_scripts() {
    wp_enqueue_style( \'my-admin-css\', \'path/to/file.css\', array(), 0.1);
}
add_action( \'admin_enqueue_scripts\', \'wp245372_admin_enqueue_scripts\' );

SO网友:Cedon

Try this:

function wpse245372_admin_user_css() {
    $user = wp_get_current_user();
    if ( in_array( \'administrator\', (array) $user->roles ) ) {
       // Your Admin Stuff
    } elseif ( in_array( \'editor\', (array) $user->roles ) ) {
       // Your Editor Stuff
    } elseif ( in_array( \'contributor\', (array) $user->roles ) ) {
       echo \'<style> CSS </style>\';
    } else {
       // What Everyone Else Gets
    }
}
add_action( \'admin_head\', \'wpse245372_admin_user_css\' );