如何在多站点中获取特定博客的用户角色?

时间:2014-10-02 作者:Denis Lam

我们如何在多站点网络上获得特定站点的用户角色?

假设用户是父站点上的订阅者,并且是自己子域的管理员。是否有办法只返回父站点上的角色或通过特定的博客id返回角色?

例如:get_wpmu_user_role($user_id, $blog_id);

1 个回复
SO网友:Nicolai Grossherr

您可以使用WP_User:

$wp_user_obj = new WP_User(
    // $user_id
    get_current_user_id(),
    // $name | login, ignored if $user_id is set
    \'\',
    // $blog_id
    get_current_blog_id()
);
get_users():

$get_users_obj = get_users(
    array(
        \'blog_id\' => get_current_blog_id(),
        \'search\'  => get_current_user_id()
    )
);
因为他们都是blog_id 感知,如果你提供的话。

前者将返回WP_User 对象,角色可以如下访问:

// array of roles
$wp_user_obj->roles
// access the first or only 
$wp_user_obj->roles[0]
后者将返回WP_User 对象,实际上只有一个对象,因为user_id 只能返回一个唯一的对象,角色的访问方式如下:

// array of roles
$get_users_obj[0]->roles
// access the first or only 
$get_users_obj[0]->roles[0]
另一个想法,我从来没有这样做过,但如果你有某种共享登录,并且想要当前用户的信息,那么这也可以:

switch_to_blog( $blog_id );
$current_user_at_different_blog = wp_get_current_user();
restore_current_blog();
wp_get_current_user() 是否返回aWP_User 对象,以便可以访问信息,如:

// array of roles
$current_user_at_different_blog->roles
// access the first or only 
$current_user_at_different_blog->roles[0]
最后但并非最不重要的是current_user_can_for_blog() 可以这样使用:

current_user_can_for_blog( $blog_id, $capability );
codex页面说明:

当前用户是否具有给定博客的功能或角色。

但我非常怀疑current_user_can() 信息技术shouldn\'t be used for roles, 但能力检查是强大的,也是有用的。

结束

相关推荐

Multisite Widget/Content

我正在使用WordPress multisite,需要在侧边栏中显示所有子网站的内容。这是一个由50多个站点组成的网络,因此每隔几天用此内容更新所有50多个侧栏是不现实的。我找到的一个解决方案是简单地将我想要的内容插入侧边栏。虽然我不希望我的客户机编辑这个文件,但我希望他们使用TinyMCE编辑器而不是HTML。另一个想法是在每个子网站中嵌入一个iframe,让我的客户端更新iframe引用的页面。我的最后一个想法是用TinyMCE编辑器创建一个插件,将代码注入侧栏。php文件保存时,虽然我不知道插件是否