Site-Administrator in einer Netzwerkinstallation kann Benutzer nicht bearbeiten?

15

Für die Stack Exchange-Community-Blogs haben wir eine Netzwerkinstallation eingerichtet. Mir wurde mitgeteilt, dass die Site-Administratorrolle keine Option für die Bearbeitung durch Benutzer zulässt. Auf der Benutzerseite der Site gibt es beim Bewegen des Mauszeigers über einen Benutzer nur eine Option für delete, keine für edit.

Die einzige Option, die sich auf Benutzerberechtigungen bezieht, ist die folgende, aber nicht wirklich das, was ich hier anstrebe ...

neue Benutzer hinzufügen

Wie kann ich dem Site-Administrator die volle Kontrolle über die Benutzer auf dieser bestimmten Site ermöglichen?

Rebecca Chernoff
quelle

Antworten:

8

Wie in der Beschreibung des Bildschirms "Network Admin Users" ( Netzwerkadministrator-Benutzer) erläutert , handelt es sich bei einer Netzwerkinstallation (Multisite-Modus) um Benutzer

Wird global zum gesamten Netzwerk hinzugefügt und dann bestimmten Standorten zugewiesen

Normale Administratoren dürfen diese globalen Profile nicht ändern, da sich ihre Berechtigungen nur auf die angegebene Site erstrecken. Diese Aufgabe ist Superadministratoren vorbehalten, die die volle Kontrolle über das gesamte Netzwerk haben.

In früheren Versionen von WordPress konnten Sie in Ihrer Datei wp-config.php festlegen , dass Multisite-Installationen, für die separate WordPress MU- Unterstützung EDIT_ANY_USERerforderlich war, wahr sind. Da jedoch die Unterstützung für mehrere Standorte von Haus aus integriert wurde, glaube ich, dass dies beseitigt wurde.

Um Netzwerkbenutzer über den Bildschirm "Netzwerkadministrator-Benutzer" zu verwalten, muss ein Benutzer einer Rolle angehören, die mindestens über die Berechtigungen manage_network_usersund verfügt edit_users. Sie könnten versuchen, eine benutzerdefinierte Rolle zu erstellen, die diese und die Standardadministratorberechtigungen enthält, aber ich bin nicht überzeugt, wie effektiv dies sein würde. Ich persönlich würde nur versuchen, diese Einschränkungen nicht zu umgehen.

Tim Stone
quelle
0

Vielleicht kann dieses Plugin helfen: http://wordpress.org/extend/plugins/extended-super-admins/ in Kombination mit der harten Codierung der globalen Variablen $ super_admins, die für jede Site spezifisch ist.

Es sollte in der Lage sein, in einem Hook gesetzt zu werden, während das Site-Admin-Menü geladen wird - nicht ganz sicher, wie man das noch erzwingt. Es scheint eine vielversprechende Lösung für ein Problem zu sein, mit dem ich mich in Kürze befassen muss.

Siehe: http://svn.automattic.com/wordpress/trunk/wp-admin/includes/ms.php und beachten Sie die Rückgabe, wenn das globale $ super_admins bereits festgelegt ist.

/ **
 * Gewährt Super-Administratorrechte.
 *
 * @since 3.0.0
 * @param int $ user_id
 * /
Funktion grant_super_admin ($ user_id) {
    global $ super_admins;

    // Wenn globales Überschreiben von super_admins definiert ist, gibt es hier nichts zu tun.
    if (isset ($ super_admins))
        falsch zurückgeben;

    do_action ('grant_super_admin', $ user_id);

    // Rufe site_admins direkt ab, anstatt get_super_admins () zu verwenden
    $ 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;
    }
    falsch zurückgeben;
}

/ **
 * Widerruft Super-Administratorrechte.
 *
 * @since 3.0.0
 * @param int $ user_id
 * /
Funktion revoke_super_admin ($ user_id) {
    global $ super_admins;

    // Wenn globales Überschreiben von super_admins definiert ist, gibt es hier nichts zu tun.
    if (isset ($ super_admins))
        falsch zurückgeben;

    do_action ('revoke_super_admin', $ user_id);

    // Rufe site_admins direkt ab, anstatt get_super_admins () zu verwenden
    $ 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;
        }
    }
    falsch zurückgeben;
}

Marfarma
quelle
0

Wenn Sie als Superadministrator zu "Netzwerkeinstellungen" wechseln, wird eine Option angezeigt

Neuen Benutzer hinzufügen: Ermöglichen Sie Site-Administratoren das Hinzufügen neuer Benutzer zu ihrer Site über die Seite "Benutzer → Neu hinzufügen"

Aktivieren Sie einfach diese Option.

Auf diese Weise können normale Nicht-Super-Sub-Site-Administratoren neue Benutzer hinzufügen.

Xarcell
quelle