我正在尝试在用户登录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个小时试图自己解决这个问题:(
答案 0 :(得分: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 :(得分: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并将其粘贴到一个完美的位置;)
答案 2 :(得分:0)
您可以像这样添加到前端或后端;
/* Adds the user id to the admin body class array
* Add User Role Class to Body
* Ref https://lakewood.media/add-user-role-id-body-class-wordpress/
*/
function print_user_classes() {
if ( is_user_logged_in() ) {
add_filter('body_class','class_to_body');
add_filter('admin_body_class', 'class_to_body_admin');
}
}
add_action('init', 'print_user_classes');
/// Add user role class to front-end body tag
function class_to_body($classes) {
global $current_user;
$user_role = array_shift($current_user->roles);
$classes[] = $user_role.' ';
return $classes;
}
/// Add user role class and user id
/// add 'class-name' to the $classes array
function class_to_body_admin($classes) {
global $current_user;
$user_role = array_shift($current_user->roles);
/* Adds the user id to the admin / backend body class array */
$user_ID = $current_user->ID;
$classes = $user_role.' '.'user-id-'.$user_ID ;
return $classes;
return 'user-id-'.$user_ID;
}
答案 3 :(得分:-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;
}