【问题标题】:Wordpress: Add all user roles on body classWordpress:在正文类上添加所有用户角色
【发布时间】:2019-01-15 05:37:46
【问题描述】:

我找到了一些很好的代码,可以在 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;
}

【问题讨论】:

  • 您想在不登录的情况下获取所有角色吗?
  • 否,当前用户的所有角色。我在我的网站上启用了每个用户的多个角色。
  • 我已经回答了,请试试那个。

标签: php wordpress


【解决方案1】:

有两个过滤器body_classadmin_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;
 }

【讨论】:

    【解决方案2】:

    知道了!我需要使用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;
    }
    

    【讨论】:

      【解决方案3】:

      您可以在主题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;
      }
      

      【讨论】:

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

        【讨论】:

          猜你喜欢
          • 2014-07-21
          • 1970-01-01
          • 2021-05-07
          • 2018-01-06
          • 2021-07-27
          • 2014-09-05
          • 2015-01-24
          • 2020-10-07
          • 2018-01-12
          相关资源
          最近更新 更多