web-dev-qa-db-fra.com

Mettre à jour le rôle d'utilisateur sur le réseau lorsque l'utilisateur du site principal est mis à jour

J'utilise une copie légèrement modifiée du plug-in Gestion des utilisateurs multisites pour que les utilisateurs restent synchronisés sur un réseau multisite, mais ils ont un problème. Lorsqu'un rôle d'utilisateur est mis à jour sur le site principal, le rôle n'est PAS mis à jour sur le sous-site. Pour que tout fonctionne correctement, les rôles d'utilisateur doivent rester synchronisés.

J'ai cherché sans succès, y a-t-il une action à exécuter lorsqu'un utilisateur est mis à jour? Je connais les fonctions/hooks profile_update et wp_update_user, mais aucune de ces méthodes ne fonctionne car le rôle de l'utilisateur est mis à jour via une fonction externe. J'ai donc besoin d'une nouvelle façon de toujours synchroniser les rôles d'utilisateur.

Des idées?

1
Pippin

J'ai trouvé un moyen de contourner le problème. Ce n'est pas un "correctif", mais plutôt un moyen de résoudre le problème de la nécessité de rôles d'utilisateur synchronisés. Au lieu d'essayer de faire correspondre tous les rôles d'utilisateur, j'ai décidé de vérifier uniquement les rôles d'utilisateur pour le site principal. voir ma fonction ci-dessous pour savoir comment je l'ai fait:

/*
* Function to check a specified user from a subsite against
* the role of that same user on the main site
*
* @param int $site_to_check the id of the site to check the user's role from
* @param int $user_id the user's id to check
*/
function cgc_check_for_citizen($site_to_check = 1, $user_id = null) {
    if(!isset($user_id)) {
        return false;
    }
    $citizen = false;

    global $blog_id;

    if($blog_id == 1) { // we're on the main site
        if(user_can($user_id, 'read_citizen')) {
            $citizen = true;
        }
    } else {
        switch_to_blog($site_to_check);
            if(user_can($user_id, 'read_citizen')) {
                $citizen = true;
            }
        restore_current_blog();
    }
    return $citizen;
}
2
Pippin

Je pense que si vous ne pouvez pas comprendre, personne ne le peut. ; (

Quoi qu'il en soit, ce plugin met automatiquement à jour les rôles d'utilisateur pour les sous-sites basés sur le site principal. Alors peut-être que vous pouvez extraire le code:

http://wordpress.org/extend/plugins/user-role-editor/

1
WPExplorer

Salut, je ne suis pas sûr si ce plugin va vous aider ou non. Mais essayez-le. Essayez le plugin de scribu approprié-réseau-activation

0
Giri