根据用户角色有条件地显示 php 内容


Display conditionally php content depending on user role

我有一行可以打印用户个人资料中的联系信息。只有登录用户才能看到联系信息。

<?php 
  // Contact Info
?>

我有 2 个用户角色 - supervisor, manager

我试图实现的是,如果登录用户是supervisor那么他可以看到自己的联系信息,但他看不到manager's联系人。

但是,如果登录用户是manager则他可以看到自己的联系信息,但也可以看到supervisor's联系信息。

我一直在尝试使用标准的if current_user_is功能,但这只会显示一个或另一个。

<?php global $current_user;
      get_currentuserinfo();
      if(current_user_is("manager"))
          echo 'Contact Info Here';
      else if(current_user_is("supervisor"))
          echo 'Contact Info Here';
      else if(current_user_is_not("manager"))
          echo 'Restricted contact, must be a manager';
?>

我只是不知道如何使这项工作,所以它有条件地显示。

我在全局规则中也有这些规则,不确定它的相关性如何:

$store_user = get_userdata( get_query_var( 'author' ) );
$store_info = get_store_info( $store_user->ID );
$user_meta = get_user_meta($store_user->ID);

从问题来看,您似乎需要调用 get_users 函数并传递"主管"角色以获取该类型的用户并将其联系信息显示给"经理"角色。

在您编写时,显示的联系信息是针对当前用户的。如果要显示其他角色的联系信息,则需要获取此信息。

未经测试,但这可能很接近...

//if current user is the manager...
$supervisors = get_users( 'role=supervisor' );
foreach ($supervisors as $supervisor) {
    echo '<span>' . esc_html( $supervisor->user_email ) . '</span>';
}
我只不过

是 php 的初学者,但使用"OR"可以帮助您在单个内容上聚合角色的条件:

<?php global $current_user;
    get_currentuserinfo();
    if(current_user_is("manager") OR current_user_is("supervisor"))
        echo 'Contact Info Here';
    else()
        echo 'Restricted contact, must be a manager';
?>