Я создал сайт WordPress для клиента. Клиент имеет роль редактора, однако я установил плагин Members и дал клиенту возможность добавлять новых пользователей в WP Admin. Это работает просто отлично.
Вопрос, который у меня возникает, заключается в том, что я хотел бы, чтобы у клиента была возможность создавать нового пользователя, как с ролями «Автор», «Подписчик», «Редактор» и «Автор», но НЕ «Администратор». Новые пользователи, создаваемые клиентом, не должны иметь роль администратора. Можно ли как-то скрыть эту опцию?
Спасибо ваю
Ответы:
Это на самом деле довольно легко. Вам нужно отфильтровать
map_meta_caps
и запретить редакторам создавать / редактировать администраторов, а также удалить роль администратора из массива «редактируемые роли». Этот класс, как плагин или в файле functions.php вашей темы, сделает это:РЕДАКТИРОВАТЬ
Итак, я посмотрел, почему это позволяет удалению пользователей ускользать. Похоже, что delete_user обрабатывается немного иначе, чем edit_user; Я изменил метод map_meta_cap, чтобы обойти это. Я протестировал на 3.0.3, и это не позволит никому, кроме администраторов, фактически удалять, редактировать или создавать администратора.
РЕДАКТИРОВАТЬ 2
Я обновил код, чтобы отразить ответ @ bugnumber9 ниже. Пожалуйста, иди дать этот ответ upvote!
источник
Несмотря на то, что ей ~ 7 лет, эту ветку легко найти, и она по-прежнему является рабочим решением. Я имею в виду код, предоставленный @John P Bloch.
Тем не менее, в PHP 7 он производит некритическую ошибку (PHP устарел) следующим образом:
Чтобы это исправить, просто замените этот кусок:
с этим:
Это решит проблему.
источник
Я искал решение, где Редактор мог бы редактировать только меню И создавать / редактировать пользователей без использования плагина. Так что я сделал это для тех, кто заинтересован.
источник
@John P Решение Blochs по-прежнему работает отлично, но я подумал, что добавлю свой маленький фильтр и для map_meta_cap. Просто немного короче и чище, по крайней мере для моих глаз;)
источник