web-dev-qa-db-fra.com

Comment obtenir le rôle d'utilisateur d'un blog spécifique sur plusieurs sites?

Comment obtenir le rôle d'utilisateur d'un site spécifique sur un réseau multisite?

Supposons que l'utilisateur est un abonné du site parent et qu'il administre son propre sous-domaine. Existe-t-il un moyen de renvoyer uniquement le rôle sur le site parent ou par un identifiant de blog spécifique?

Ex: get_wpmu_user_role($user_id, $blog_id);

2
Denis Lam

Vous pouvez utiliser soit 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()
);

Ou get_users() :

$get_users_obj = get_users(
    array(
        'blog_id' => get_current_blog_id(),
        'search'  => get_current_user_id()
    )
);

Comme ils sont tous les deux blog_id perceptif, si vous le fournissez.

Le premier retournera un objet WP_User, les rôles sont accessibles comme ceci:

// array of roles
$wp_user_obj->roles
// access the first or only 
$wp_user_obj->roles[0]

Ce dernier retournera un tableau d'objets WP_User, en réalité un seul objet, car la recherche d'un user_id ne peut renvoyer qu'un seul objet, les rôles sont accessibles comme suit:

// array of roles
$get_users_obj[0]->roles
// access the first or only 
$get_users_obj[0]->roles[0]


Une autre idée, je ne l’ai jamais fait moi-même, mais si vous avez un identifiant de connexion partagé et que vous souhaitez obtenir les informations de l’utilisateur actuel, cela pourrait également fonctionner:

switch_to_blog( $blog_id );
$current_user_at_different_blog = wp_get_current_user();
restore_current_blog();

wp_get_current_user() renvoie un objet WP_User, donc les informations sont accessibles comme:

// array of roles
$current_user_at_different_blog->roles
// access the first or only 
$current_user_at_different_blog->roles[0]


Dernier point, mais non le moindre, il y a current_user_can_for_blog() qui peut être utilisé comme ceci:

current_user_can_for_blog( $blog_id, $capability );

La page du codex dit:

Si l'utilisateur actuel a une capacité ou un rôle pour un blog donné.

Mais je fortement suspect comme current_user_can() it ne devrait pas être utilisé pour les rôles , mais les vérifications des capacités sont utiles et utiles.

6
Nicolai