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

13

Pour les blogs de la communauté Stack Exchange, nous avons configuré une installation réseau. 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 ce n'est pas vraiment ce que je vais faire ici ...

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

    
posée Rebecca Chernoff 17.05.2011 - 19:40

4 réponses

6

Comme expliqué dans la description de é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 distinct du WordPress MU , 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 essayer de créer un rôle personnalisé incluant ces autorisations et les autorisations d'administrateur standard, mais je ne suis pas convaincu de son efficacité. Personnellement, je voudrais juste essayer d'éviter de contourner ces restrictions.

    
réponse donnée Tim Stone 18.05.2011 - 01:58
2

Wordpress multisite 3.0 n'autorise pas les administrateurs de site à modifier des utilisateurs. enlace

    
réponse donnée NW Tech 18.05.2011 - 01:50
2

Cela a fonctionné pour moi: enlace

    
réponse donnée JonnyPlow 27.09.2011 - 03:40
0

Peut-être que ce plugin peut aider: enlace en combinaison avec le codage en dur de la variable globale, $ super_admins, spécifiques à 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: enlace et notez le retour si le global $ super_admins est déjà défini.

/**
 * Grants super admin privileges.
 *
 * @since 3.0.0
 * @param int $user_id
 */
function grant_super_admin( $user_id ) {
    global $super_admins;

    // If global super_admins override is defined, there is nothing to do here.
    if ( isset($super_admins) )
        return false;

    do_action( 'grant_super_admin', $user_id );

    // Directly fetch site_admins instead of using 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( 'granted_super_admin', $user_id );
        return true;
    }
    return false;
}

/**
 * Revokes super admin privileges.
 *
 * @since 3.0.0
 * @param int $user_id
 */
function revoke_super_admin( $user_id ) {
    global $super_admins;

    // If global super_admins override is defined, there is nothing to do here.
    if ( isset($super_admins) )
        return false;

    do_action( 'revoke_super_admin', $user_id );

    // Directly fetch site_admins instead of using 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;
        }
    }
    return false;
}

    
réponse donnée marfarma 19.05.2011 - 01:52

Lire d'autres questions sur les étiquettes