wordpress:在body类上添加用户角色

问题描述 投票:0回答:3

我试图在用户登录wordpress后添加用户角色,并将用户角色放在body class =“”中

function my_class_names($classes) {
global $current_user;
$user_roles = $current_user->roles;
$user_role = array_shift($user_roles);

    if  ( is_user_logged_in() )  {
        $classes[] = $user_role;
    }
return $classes; 
} 
add_filter('body_class','my_class_names');

我不是一个已经尝试过研究的PHP人,我找到了how to get the user role,另一篇文章是how to add body class,我很难让他们两个都工作。我希望有人可以帮我解决这个花了2个多小时试图自己解决这个问题:(

php wordpress
3个回答
1
投票

您可以将功能更改为此

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

然后,像这样改变你的身体标签

<body <?php body_class( get_user_role() ); ?>>

如果用户未登录,则不会添加任何内容。

或者您还可以添加一个功能(from the codex

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

那可行。


1
投票
add_filter('body_class','add_role_to_body');
function add_role_to_body($classes) {
$current_user = new WP_User(get_current_user_id());
$user_role = array_shift($current_user->roles);
$classes[] = 'role-'. $user_role;
return $classes;
}

在我的案例中,这个代码通过向body类添加用户角色类来完美地运行:)

只需将代码复制到function.php并将其粘贴在一个完美的地方;)


-1
投票

同样,如果您想将user-id添加到后端的body类中,您可以使用:

/* Adds the user id to the admin body class array */
add_filter('admin_body_class', 'add_username_to_body');
function add_username_to_body( $classes ) {
    // add 'class-name' to the $classes array
    global $current_user;
    $user_ID = $current_user->ID;
    $classes[] = 'user-id-' . $user_ID;
    // return the $classes array
    return 'user-id-'.$user_ID;
}
© www.soinside.com 2019 - 2024. All rights reserved.