我找到了一些不错的代码,可以在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;
}
答案 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_class
和admin_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;
}