WordPress:在主体类上添加所有用户角色

时间:2018-08-08 04:09:49

标签: php wordpress

我找到了一些不错的代码,可以在Wordpress中为我的主体类添加一个用户角色,但是我正在努力适应它,以返回当前用户的所有用户角色(每个用户我有多个用户角色)。我知道array_shift()仅返回数组中的第一项,但是我不确定使用什么代替返回所有角色。有什么想法吗?

function get_user_role() {
    global $current_user;
    $user_roles = $current_user->roles;
    $user_role = array_shift($user_roles);
    return $user_role;
}

add_filter('body_class','my_class_names');
function my_class_names($classes) {
    $classes[] = get_user_role();
    return $classes;
}

4 个答案:

答案 0 :(得分:0)

知道了!我需要使用implode()将数组作为字符串返回。这是我的代码:

function get_user_role() {
    global $current_user;
    $user_roles = $current_user->roles;
    $user_roles_list = implode(" ", $user_roles);
    return $user_roles_list;
}

add_filter('body_class','my_class_names');
function my_class_names($classes) {
    $classes[] = get_user_role();
    return $classes;
}

答案 1 :(得分:0)

您可以在主题functions.php文件中添加以下代码,以将所有作者角色用作正文类中的类名。

add_filter('body_class','my_class_names');

function my_class_names($classes) {
    global $current_user;
    $user_roles = $current_user->roles;
    if( is_array( $user_roles ) ) {
        $user_role = implode( ' ', $user_roles );
        $classes[] = $user_role;
    }
    return $classes;
}

答案 2 :(得分:0)

有两个过滤器body_classadmin_body_class用于在body标签中添加类。

function print_user_classes() {
    if ( is_user_logged_in() ) {
        add_filter('body_class','restrictly_get_current_user_role');//Add user role class to front-end body tag
        add_filter('admin_body_class', 'restrictly_get_current_user_role');//Adds the user id to the admin body class array
    }
}
add_action('init', 'print_user_classes'); 


 function restrictly_get_current_user_role($classes) { 
    $user = wp_get_current_user();
    $roles = ( array ) $user->roles;
    $classes[] = implode(" ",$roles);
    return $classes;
 }

答案 3 :(得分:0)

function get_user_role() {
    $current_user_id = get_current_user_id();
    if($current_user_id > 0){
        global $current_user;
        $user_roles = $current_user->roles;
        $user_role = array_shift($user_roles);
    }else{
        $user_role = array();
    }
    return $user_role;
}

add_filter('body_class','mj_class_names');

function mj_class_names($classes) {
    $class = get_user_role();
    $classes = array_merge( $classes, $class );
    return $classes;
}