O administrador do site em uma instalação de rede não pode editar usuários?

15

Para os blogs da comunidade Stack Exchange, temos uma instalação de rede que configuramos. Foi-me dito que a função de administrador do site não está permitindo uma opção para edição do usuário. Na página de usuários do site, ao passar o mouse sobre um usuário, há apenas uma opção para delete, e não uma edit.

A única opção relacionada às permissões do usuário é a seguinte, mas não é exatamente o que estou procurando aqui ...

adicionar novos usuários

Como posso permitir que o administrador do site tenha controle total sobre os usuários desse site específico?

Rebecca Chernoff
fonte

Respostas:

8

Conforme explicado na descrição da tela Usuários de administrador de rede , em uma instalação de rede (modo multisite), os usuários são

adicionado globalmente a toda a rede e depois atribuído a sites específicos

Os administradores normais não têm permissão para modificar esses perfis globais, pois seus privilégios se estendem apenas ao site especificado. Essa tarefa é reservada para superadministradores, que têm controle total em toda a rede.

Nas versões anteriores do WordPress, quando as instalações multisite contavam com suporte separado para MU do WordPress , era possível definir EDIT_ANY_USERcomo verdadeiro no seu arquivo wp-config.php. No entanto, como o suporte a vários sites foi integrado de forma nativa, acredito que isso foi removido.

Para gerenciar usuários de rede na tela Usuários de administrador de rede, um usuário deve pertencer a uma função que possua pelo menos as permissões manage_network_userse edit_users. Você pode tentar criar uma função personalizada que inclua essas e as permissões de administrador padrão, mas não estou convencido de quão eficaz isso seria. Pessoalmente, eu tentaria evitar contornar essas restrições.

Tim Stone
fonte
0

Talvez este plugin possa ajudar: http://wordpress.org/extend/plugins/extended-super-admins/ em combinação com a codificação codificada da variável global $ super_admins, específica para cada site.

Ele deve poder ser configurado em um gancho enquanto o menu de administração do site é carregado - ainda não sabemos ao certo como impor isso. Parece uma solução promissora para um problema que terei de lidar comigo em breve.

Consulte: http://svn.automattic.com/wordpress/trunk/wp-admin/includes/ms.php e observe o retorno se o global $ super_admins já estiver definido.

/ **
 * Concede privilégios de super administrador.
 *
 * @since 3.0.0
 * @param int $ user_id
 * /
função grant_super_admin ($ user_id) {
    global $ super_admins;

    // Se a substituição global de super_admins estiver definida, não há nada a fazer aqui.
    if (isset ($ super_admins))
        retorna falso;

    do_action ('grant_super_admin', $ user_id);

    // Busque diretamente site_admins em vez de usar get_super_admins ()
    $ super_admins = get_site_option ('site_admins', matriz ('admin'));

    $ user = novo 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;
    }
    retorna falso;
}

/ **
 * Revoga privilégios de super administrador.
 *
 * @since 3.0.0
 * @param int $ user_id
 * /
função revoke_super_admin ($ user_id) {
    global $ super_admins;

    // Se a substituição global de super_admins estiver definida, não há nada a fazer aqui.
    if (isset ($ super_admins))
        retorna falso;

    do_action ('revoke_super_admin', $ user_id);

    // Busque diretamente site_admins em vez de usar get_super_admins ()
    $ super_admins = get_site_option ('site_admins', matriz ('admin'));

    $ user = novo WP_User ($ user_id);
    if ($ user-> user_email! = get_site_option ('admin_email')) {
        if (false! == ($ key = array_search ($ user-> user_login, $ super_admins))) {
            não definido ($ super_admins [$ key]);
            update_site_option ('site_admins', $ super_admins);
            do_action ('revoked_super_admin', $ user_id);
            return true;
        }
    }
    retorna falso;
}

Marfarma
fonte
0

Se você for para "Configurações de rede" como superadministrador, verá uma opção

Adicionar novo usuário: permita que os administradores do site adicionem novos usuários ao site através da página "Usuários → Adicionar novo"

Basta marcar esta opção.

Isso permitirá que administradores não pertencentes ao subsite comum adicionem novos usuários.

Xarcell
fonte