L'administrateur du site dans une installation réseau ne peut pas modifier les utilisateurs?

15

Pour les blogs de la communauté Stack Exchange, nous avons une installation réseau que nous avons configurée. On me dit que le rôle d'administrateur de site n'autorise pas d'option de modification par l'utilisateur. Sur la page des utilisateurs du site lorsque vous survolez un utilisateur, il n'y a qu'une option pour delete, pas une pour edit.

La seule option liée aux autorisations des utilisateurs est la suivante, mais pas vraiment ce que je recherche ici ...

ajouter de nouveaux utilisateurs

Comment puis-je permettre à l'administrateur du site d'avoir un contrôle total sur les utilisateurs de ce site spécifique?

Rebecca Chernoff
la source

Réponses:

8

Comme expliqué dans la description de l' écran Utilisateurs administrateur réseau , dans une installation réseau (mode multisite), les utilisateurs sont

ajoutée globalement à l'ensemble du réseau, puis affectée à des sites spécifiques

Les administrateurs normaux ne sont pas autorisés à modifier ces profils globaux, car leurs privilèges s'étendent uniquement à leur site donné. Cette tâche est réservée aux super administrateurs, qui ont un contrôle total sur l'ensemble du réseau.

Dans les versions antérieures de WordPress, lorsque les installations multisites s'appuyaient sur une prise en charge distincte de WordPress MU , vous pouviez définir EDIT_ANY_USERcomme vrai dans votre fichier wp-config.php. Cependant, étant donné que le support multisite était nativement intégré, je pense que cela a été supprimé.

Pour gérer les utilisateurs du réseau à partir de l'écran Utilisateurs de l'administrateur réseau, un utilisateur doit appartenir à un rôle disposant au moins des autorisations manage_network_userset edit_users. Vous pouvez essayer de créer un rôle personnalisé qui inclut ces autorisations d'administrateur standard, mais je ne suis pas convaincu de son efficacité. Personnellement, j'essaierais juste d'éviter de contourner ces restrictions.

Tim Stone
la source
0

Ce plugin peut peut-être aider: http://wordpress.org/extend/plugins/extended-super-admins/ en combinaison avec le codage en dur de la variable globale, $ super_admins, spécifique à chaque site.

Il devrait pouvoir être configuré dans un crochet lorsque le menu d'administration du site est chargé - vous ne savez pas encore comment appliquer cela. Cela semble une solution prometteuse à un problème que je devrai régler moi-même sous peu.

Voir: http://svn.automattic.com/wordpress/trunk/wp-admin/includes/ms.php et notez le retour si le global, $ super_admins est déjà défini.

/ **
 * Accorde des privilèges de super administrateur.
 *
 * @since 3.0.0
 * @param int $ user_id
 * /
fonction grant_super_admin ($ user_id) {
    global $ super_admins;

    // Si la substitution globale des super_admins est définie, il n'y a rien à faire ici.
    if (isset ($ super_admins))
        retour faux;

    do_action ('grant_super_admin', $ user_id);

    // Récupère directement site_admins au lieu d'utiliser get_super_admins ()
    $ super_admins = get_site_option ('site_admins', array ('admin'));

    $ user = new WP_User ($ user_id);
    if (! in_array ($ user-> user_login, $ super_admins)) {
        $ super_admins [] = $ user-> user_login;
        update_site_option ('site_admins', $ super_admins);
        do_action ('grant_super_admin', $ user_id);
        return true;
    }
    retour faux;
}

/ **
 * Révoque les privilèges de super administrateur.
 *
 * @since 3.0.0
 * @param int $ user_id
 * /
fonction revoke_super_admin ($ user_id) {
    global $ super_admins;

    // Si la substitution globale des super_admins est définie, il n'y a rien à faire ici.
    if (isset ($ super_admins))
        retour faux;

    do_action ('revoke_super_admin', $ user_id);

    // Récupère directement site_admins au lieu d'utiliser get_super_admins ()
    $ super_admins = get_site_option ('site_admins', array ('admin'));

    $ user = new WP_User ($ user_id);
    if ($ user-> user_email! = get_site_option ('admin_email')) {
        if (false! == ($ key = array_search ($ user-> user_login, $ super_admins))) {
            unset ($ super_admins [$ key]);
            update_site_option ('site_admins', $ super_admins);
            do_action ('revoked_super_admin', $ user_id);
            return true;
        }
    }
    retour faux;
}

marfarma
la source
0

Si vous allez dans "Paramètres réseau" en tant que super administrateur, vous verrez une option

Ajouter un nouvel utilisateur: autorisez les administrateurs de site à ajouter de nouveaux utilisateurs à leur site via la page "Utilisateurs → Ajouter un nouvel utilisateur"

Cochez simplement cette option.

Cela permettra aux administrateurs de sous-sites normaux non super d'ajouter de nouveaux utilisateurs.

Xarcell
la source