web-dev-qa-db-fra.com

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

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 pour la 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 vais faire ici ...

add new users

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

15
Rebecca Chernoff

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

ajouté globalement à l'ensemble du réseau, puis affecté à 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 disposent d'un contrôle total sur l'ensemble du réseau.

Dans les versions précédentes de WordPress, lorsque les installations multisites reposaient sur un support séparé WordPress MU support, vous pouviez définir EDIT_ANY_USER comme étant vrai dans votre fichier wp-config.php. Cependant, le support multisite étant 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 minimum des autorisations manage_network_users et edit_users. Vous pourriez essayez de créer un rôle personnalisé qui incluait ceux-ci et les autorisations d'administrateur standard, mais je ne suis pas convaincu de son efficacité. Personnellement, je voudrais juste éviter de contourner ces restrictions.

7
Tim Stone

Wordpress multisite 3.0 n'autorise pas les administrateurs de site à modifier des utilisateurs. http://wordpress.org/support/topic/administrators-cant-edit-users

3
NW Tech
2
JonnyPlow

Peut-être que ce plugin pourra aider: http://wordpress.org/extend/plugins/extended-super-admins/ en combinaison avec le codage en dur de la variable globale $ super_admins, propre à chaque site.

Il devrait pouvoir être installé dans un crochet lorsque le menu d’administration du site est chargé - vous ne savez pas encore comment le faire respecter. 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 la variable globale $ super_admins est déjà définie.

/** 
 * Accorde des privilèges de super administrateur. 
 * 
 * @Depuis 3.0.0 
 * @Param int $ user_id 
 */
 function grant_super_admin ($ user_id) {
 global $ super_admins; 
 
 // Si le remplacement global des super_admins est défini, vous ne pouvez rien faire ici. . 
 if (isset ($ super_admins)) 
 renvoie false; 
 
 do_action ('grant_super_admin', $ user_id); 
 
 // Lit 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 (' sites_admins ', $ super_admins); 
 do_action (' grant_super_admin ', $ user_id); 
 return true; 
} 
 return false; 
} 
 
/** 
 * Annule les privilèges de super administrateur. 
 * 
 * @Depuis 3.0.0 
 * @Param int $ id_utilisateur 
 */
 Fonction revoke_super_admin ($ user_id) {
 global $ super_admins; 
 
 // Si la substitution globale de super_admins est définie, il n'y a rien à faire ici. 
 if (isset ($ super_admins) ) 
 return false; 
 
 do_action ('revoke_super_admin', $ user_id); 
 
 // Récupérez directement site_admins au lieu d'utiliser get_super_admins () 
 $ super_admins = get_site_option ('administrateur_site', 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; 
} 
} 
 return false; 
} 
 
0
marfarma

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

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

Cochez simplement cette option.

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

0
Xarcell