我试图在用户登录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个多小时试图自己解决这个问题:(
您可以将功能更改为此
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;
}
那可行。
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并将其粘贴在一个完美的地方;)
同样,如果您想将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;
}