Wordpress多站点 - 从网络上的其他站点获取用户角色

时间:2017-12-09 20:08:07

标签: php wordpress

我有一个包含两个站点的Wordpress多站点 - 主站点和子站点。

我有两个用户角色 - 标准(免费)角色和黄金(付费)角色。

用户可以作为标准用户或付费用户注册主站点,但无法注册子站点。

用户注册网络,可以访问整个网络,并创建一个博客文章,为他们选择的网站。

用户角色存储在主站点上,每个人都有一个对子站点的标准访问权限 - 对子站点没有黄金访问权限......因此标准用户可以获得对主站点的标准访问权限和标准访问权限对于子站点,黄金用户将获得对主站点的黄金访问权限,默认情况下可以访问子站点。

到目前为止我?对!所以我想要做的是根据主站点的角色显示/隐藏子站点上的内容。

所以说一个黄金用户在子网站上创建一个博客文章,当用户从前端查看我想要的(简化但你明白了)时,会显示一条横幅,上面写着“我”。来自黄金用户!'

在functions.php中的子主题中,我已经能够检测用户类型以隐藏内容;

if ( !current_user_can('access_gold_user') ){
  // content that I want to hide
}

但是这只能用于检测当前站点的用户权限...所以是否还要调整它以检测主站点用户角色?

我觉得我可以用一种更简单的方式解释这一点,但我不确定如何...所以我希望至少一切都清楚!

如果有人可以就此提出任何建议或指出我正确的方向,我将非常感激

2 个答案:

答案 0 :(得分:0)

据我所知,您无法以您的问题假设/想要的方式访问用户的角色。相反,您必须检查用户角色的全局角色数组,如下所示:

$userData = get_userdata( $userId );
$userRoles = $userData->roles;

if ( in_array("access_gold_user", $userRoles) ) {
    // yay, user has this role
} else {
    // boo, user does not have this role
}

这就是你想要的吗?

答案 1 :(得分:0)

管理以找出这个解决方案,这是我如何做到的......

父博客的blog_id为1,所以如果你想做类似的事情,只需将1更改为你的父博客ID,你就可以了

$userData = get_userdata( $userId );
$userRoles = $userData->roles;

$get_users_obj = get_users(array( 
    'blog_id' => 1,
    'search' => get_current_user_id())
 ); $user_roles = $get_users_obj[0]->roles[0];

echo "The parent role is = ", $user_roles;