¿El administrador del sitio en una instalación de red no puede editar usuarios?

15

Para los blogs de la comunidad de Stack Exchange, tenemos una instalación de red que hemos configurado. Me dicen que la función de administrador del sitio no permite una opción para la edición de usuarios. En la página de usuarios del sitio al pasar el mouse sobre un usuario, solo hay una opción para delete, no una para edit.

La única opción relacionada con los permisos de usuario es la siguiente, pero no es realmente lo que voy a hacer aquí ...

agregar nuevos usuarios

¿Cómo puedo permitir que el administrador del sitio tenga control total sobre los usuarios en ese sitio específico?

Rebecca Chernoff
fuente

Respuestas:

8

Como se explica en la descripción de la pantalla Usuarios de administrador de red , en una instalación de red (modo multisitio) los usuarios son

agregado globalmente a toda la red, luego asignado a sitios específicos

Los administradores normales no pueden modificar estos perfiles globales, ya que sus privilegios se extienden solo a su sitio determinado. Esta tarea está reservada para los superadministradores, que tienen control total en toda la red.

En versiones anteriores de WordPress, cuando las instalaciones multisitio dependían de la compatibilidad con WordPress MU por separado , podría definir EDIT_ANY_USERque sea verdadero en su archivo wp-config.php. Sin embargo, dado que el soporte multisitio se integró de forma nativa, creo que se eliminó.

Para administrar los usuarios de la red desde la pantalla Usuarios de administrador de red, un usuario debe pertenecer a un rol que tenga al menos los permisos manage_network_usersy edit_users. Usted podría intentar crear una función personalizada que incluye estos y los permisos de administrador estándar, pero no estoy convencido de la eficacia que sería. Personalmente, solo trataría de evitar eludir estas restricciones.

Tim Stone
fuente
0

Quizás este complemento pueda ayudar: http://wordpress.org/extend/plugins/extended-super-admins/ en combinación con la codificación rígida de la variable global, $ super_admins, específica de cada sitio.

Debería poder establecerse en un gancho a medida que se carga el menú de administración del sitio; todavía no estoy seguro de cómo aplicarlo. Parece una solución prometedora para un problema que tendré que tratar conmigo en breve.

Consulte: http://svn.automattic.com/wordpress/trunk/wp-admin/includes/ms.php y observe la devolución si el global, $ super_admins ya está configurado.

/ **
 * Otorga privilegios de super administrador.
 * *
 * @since 3.0.0
 * @param int $ user_id
 * /
función grant_super_admin ($ user_id) {
    global $ super_admins;

    // Si se define la anulación global de super_admins, no hay nada que hacer aquí.
    if (isset ($ super_admins))
        falso retorno;

    do_action ('grant_super_admin', $ user_id);

    // Obtenga directamente site_admins en lugar de usar get_super_admins ()
    $ super_admins = get_site_option ('site_admins', array ('admin'));

    $ usuario = nuevo 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);
        volver verdadero;
    }
    falso retorno;
}

/ **
 * Revoca los privilegios de super administrador.
 * *
 * @since 3.0.0
 * @param int $ user_id
 * /
función revoke_super_admin ($ user_id) {
    global $ super_admins;

    // Si se define la anulación global de super_admins, no hay nada que hacer aquí.
    if (isset ($ super_admins))
        falso retorno;

    do_action ('revoke_super_admin', $ user_id);

    // Obtenga directamente site_admins en lugar de usar get_super_admins ()
    $ super_admins = get_site_option ('site_admins', array ('admin'));

    $ usuario = nuevo 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 [$ clave]);
            update_site_option ('site_admins', $ super_admins);
            do_action ('revoked_super_admin', $ user_id);
            volver verdadero;
        }
    }
    falso retorno;
}

marfarma
fuente
0

Si va a "Configuración de red" como super administrador, verá una opción

Agregar nuevo usuario: permite que los administradores del sitio agreguen nuevos usuarios a su sitio a través de la página "Usuarios → Agregar nuevo"

Simplemente marque esta opción.

Eso permitirá que los administradores normales que no sean súper subsitios agreguen nuevos usuarios.

Xarcell
fuente