【问题标题】:wordpress: add user role on body classwordpress:在正文类上添加用户角色
【发布时间】:2014-07-21 23:15:01
【问题描述】:

一旦用户在 wordpress 上登录并让用户角色在正文中,我正在尝试添加用户角色 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 多小时试图自己解决这个问题:(

【问题讨论】:

  • 两个小时不是很长的时间。传统上,我们会花几天时间解决问题,然后再寻求免费帮助。

标签: php wordpress


【解决方案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;
}

这会起作用的。

【讨论】:

    【解决方案2】:
    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;
    }
    

    在我的例子中,这段代码通过将用户角色类添加到主体类来完美工作:)

    只需将代码复制到function.php并粘贴到一个完美的地方;)

    【讨论】:

    • 这是迄今为止更清洁的方式
    【解决方案3】:

    你可以像这样添加到前端或后端;

        /* 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;
        }
    

    【讨论】:

      【解决方案4】:

      WordPress 5.8 答案:

      您可以通过将以下代码添加到主题中的functions.php文件中,轻松地将当前用户的角色作为一个类添加到body标签中。

      function add_user_role_to_body_classes( $classes ) {
          global $current_user;
      
          foreach ( $current_user->roles as $user_role ) {
              if ( is_admin() ) {
                  $classes .= ' role-' . $user_role;
              } else {
                  $classes[] = 'role-' . $user_role;
              }
          }
      
          return $classes;
      }
      add_filter( 'body_class', 'add_user_role_to_body_classes', 100 );
      add_filter( 'admin_body_class', 'add_user_role_to_body_classes', 100 );
      

      解释这段代码的作用

      它检索该用户所属的角色,并将每个角色添加到正文类。由于 WordPress 支持为用户分配多个角色,因此此功能将打印出用户所属的所有角色。每个类都会以 role- 为前缀,因此具有 Editor 角色的用户会将 role-editor 输出到正文。

      add_filter( 'body_class', 'add_user_role_to_body_classes', 100 ); 行将用户角色类添加到前端的 body 标记中。

      add_filter( 'admin_body_class', 'add_user_role_to_body_classes', 100 ); 行将用户角色类添加到后端(WordPress 的管理端)的 body 标记中。

      【讨论】:

        【解决方案5】:

        同样,如果您想在后端的 body 类中添加用户 ID,您可以使用:

        /* 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;
        }
        

        【讨论】:

        • 用户正在申请角色。
        猜你喜欢
        • 2019-01-15
        • 1970-01-01
        • 2021-05-07
        • 2018-01-06
        • 2021-07-27
        • 2014-09-05
        • 2020-10-07
        • 2018-01-12
        • 1970-01-01
        相关资源
        最近更新 更多