Администратор сайта при сетевой установке не может редактировать пользователей?

15

Для блогов Stack Exchange Community мы установили сетевую установку. Мне говорят, что роль администратора сайта не позволяет редактировать пользователя. На странице пользователей сайта при наведении на пользователя есть только опция delete, а не одна edit.

Единственная опция, связанная с разрешениями пользователя, заключается в следующем, но не совсем то, что я здесь собираюсь ...

добавить новых пользователей

Как я могу дать администратору сайта полный контроль над пользователями на этом конкретном сайте?

Ребекка Чернофф
источник

Ответы:

8

Как объяснено в описании экрана Network Admin Users , при сетевой установке (многосайтовый режим) пользователи

добавляется в глобальном масштабе для всей сети, а затем назначается для определенных сайтов

Обычным администраторам не разрешается изменять эти глобальные профили, поскольку их привилегии распространяются только на данный сайт. Эта задача зарезервирована для супер-администраторов, которые имеют полный контроль над всей сетью.

В предыдущих версиях WordPress, когда для многосайтовой установки использовалась отдельная поддержка WordPress MU , EDIT_ANY_USERв файле wp-config.php можно было указывать значение true. Тем не менее, поскольку многоузловая поддержка изначально была интегрирована, я считаю, что она была удалена.

Для управления пользователями сети с экрана пользователей сети администратора, пользователь должен принадлежать к роли , которая имеет , по меньшей мере, manage_network_usersи edit_usersразрешение. Вы можете попробовать создать пользовательскую роль, включающую эти и стандартные разрешения администратора, но я не уверен, насколько это будет эффективно. Лично я бы просто попытался обойти эти ограничения.

Тим Стоун
источник
0

Возможно, этот плагин может помочь: http://wordpress.org/extend/plugins/extended-super-admins/ в сочетании с жестким кодированием глобальной переменной $ super_admins, специфичной для каждого сайта.

Это должно быть в состоянии быть установленным в ловушку, поскольку меню администратора сайта загружено - не совсем уверенный, как принудить это все же. Кажется, это многообещающее решение проблемы, с которой мне придется в ближайшее время разобраться.

Смотрите: http://svn.automattic.com/wordpress/trunk/wp-admin/includes/ms.php и отметьте возврат, если глобальный, $ super_admins уже установлен.

/ **
 * Предоставляет привилегии супер администратора.
 *
 * @since 3.0.0
 * @param int $ user_id
 * /
function grant_super_admin ($ user_id) {
    global $ super_admins;

    // Если определено глобальное переопределение super_admins, тут делать нечего.
    if (isset ($ super_admins))
        вернуть ложь;

    do_action ('grant_super_admin', $ user_id);

    // Прямая выборка site_admins вместо использования get_super_admins ()
    $ super_admins = get_site_option ('site_admins', массив ('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);
        вернуть истину;
    }
    вернуть ложь;
}

/ **
 * Отменяет привилегии супер администратора.
 *
 * @since 3.0.0
 * @param int $ user_id
 * /
function revoke_super_admin ($ user_id) {
    global $ super_admins;

    // Если определено глобальное переопределение super_admins, тут делать нечего.
    if (isset ($ super_admins))
        вернуть ложь;

    do_action ('revoke_super_admin', $ user_id);

    // Прямая выборка site_admins вместо использования get_super_admins ()
    $ super_admins = get_site_option ('site_admins', массив ('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);
            вернуть истину;
        }
    }
    вернуть ложь;
}

marfarma
источник
0

Если вы зайдете в «Настройки сети» в качестве супер администратора, вы увидите вариант

Добавить нового пользователя: разрешить администраторам сайта добавлять новых пользователей на свой сайт через страницу «Пользователи → Добавить нового».

Просто отметьте эту опцию.

Это позволит обычным администраторам не супер-сайтов добавлять новых пользователей.

Xarcell
источник