Wordpress: Add all user roles on body class

Clash Royale CLAN TAG#URR8PPP
Wordpress: Add all user roles on body class
I found some good code to add a single user role to my body classes in Wordpress, but I'm struggling to adapt it to return all user roles for the current user (I have multiple user roles per user). I know array_shift() only returns the first item in an array, but I'm not sure what to use instead to return all roles. Any ideas?
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;
No, all roles of the current user. I have multiple roles per user enabled on my site.
– Bobby Bosler
Aug 8 at 4:27
I have answered, Please try that one.
– Gufran Hasan
Aug 8 at 5:40
4 Answers
4
Got it! I needed to use implode() to return the array as a string. Here's my code:
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;
You can please add below code in theme functions.php file to get all author role as class name in body class.
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;
There are two filters body_class and admin_body_class to add classes in the body tag.
body_class
admin_body_class
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;
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;
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
Do you want to get all roles without logged in?
– Gufran Hasan
Aug 8 at 4:16