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

时间:2014-06-01 20:49:16

标签: php wordpress

我正在尝试在用户登录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个小时试图自己解决这个问题:(

4 个答案:

答案 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;
}