マルチサイトネットワーク上の特定のサイトに対するユーザーの役割をどのように取得できますか?
ユーザーが親サイトの加入者であり、自分のサブドメインの管理者であるとしましょう。親サイトまたは特定のブログIDでのみロールを返す方法はありますか?
例:get_wpmu_user_role($user_id, $blog_id);
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
オブジェクトの配列、実際には1つのオブジェクトのみを返します。user_id
の検索では一意のオブジェクトを1つだけ返すことができるため、ロールには次のようにアクセスできます。
// 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()
はWP_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 );
コーデックスページには、次のように記載されています。
現在のユーザーが特定のブログの機能または役割を持っているかどうか。
しかしIstrongのように疑わしい current_user_can()
it ロールに使用するべきではありません しかし能力チェックも強力で便利です。