Intereting Posts
Невозможно переопределить правила css по умолчанию для плагина Недопустимый аргумент действия таблицы табуляции Изменение темы = изменение главной страницы для мобильных посетителей? как скрыть подменю для неактивных страниц Отображать содержимое на одной странице Форма пользовательского приложения WordPress Эхо или не эхо? Созданы пользовательские типы сообщений, но single.php не работает Как включить персонализированные сообщения типа сообщений на странице? Как сохранить значения из списков категорий выпадающих списков после подачи неправильной формы? Различные серверы для изображений WP_Query получить сообщения из пользовательских сообщений по категориям Какое действие связано с обновлением настраиваемого поля в сети / сайте-info.php в многопользовательском режиме при обновлении информации о сайте login_enqueue_scripts не оглашает стили по умолчанию Дополнительный запрос WP на странице архива

Удалить возможность для администраторов удалять администраторов

Я изучал роли и возможности, а также работал над созданием уникальных возможностей и ролей. Я создал роль «Мастер-редактор», чтобы поддерживать пользователей практически со всеми возможностями … Однако edit_users & delete_users явно разрешает редактору пользователям CUD, включая существующих администраторов …

На данный момент я должен новичок в кодировании, чтобы быть уверенным в редактировании users.php, но я должен быть близок к решению:

if ( ! current_user_can( 'delete_users' ) ) // or is trying to delete an admin's $userids wp_die(__('You can’t delete users.')); // or administrators $update = 'del'; $delete_count = 0; foreach ( $userids as $id ) { if ( ! current_user_can( 'delete_user', $id ) ) wp_die(__( 'You can’t delete that user.' ) ); if ( $id == $current_user->ID ) { $update = 'err_admin_del'; continue; } switch ( $_REQUEST['delete_option'] ) { case 'delete': wp_delete_user( $id ); break; case 'reassign': wp_delete_user( $id, $_REQUEST['reassign_user'] ); break; } ++$delete_count; } 

Я не могу понять, как проверить, что указанные $ userids являются идентификатором пользователя администраторов. Потому что, если я могу добавить это к смерти … Я на правильном пути? Заранее спасибо.

Solutions Collecting From Web of "Удалить возможность для администраторов удалять администраторов"

Ваш вопрос, похоже, сводится к этому

Я не могу понять, как проверить, что указанные $ userids являются идентификатором пользователя администраторов.

Пытаться

 user_can($id,'administrator') 

http://codex.wordpress.org/Function_Reference/user_can

В кодексе есть предупреждение об использовании имен ролей с функцией current_user_can и это очень похоже на user_can поэтому я полагаю, что предостережение выполняется до тех пор, пока конфликтующие инструкции не будут отсортированы.

Не передавайте имя роли в current_user_can (), так как это не гарантирует правильную работу.

На той же странице также говорится:

$ возможности
(строка) (требуется) или имя роли
По умолчанию: нет

Как и источник:

  • @param string $ Возможность Возможности или название роли.

Вы взламываете основной файл? Пользователи users.php – это не users.php не так ли? Это высокий уровень обслуживания, который вы снижаете, если это так.

Очень приятно писать @s_ha_dum. Я просто продлю свой ответ на противоречие в документации.

Недавно я имел дело с current_user_can , немного исследовал и придумал эту функцию:

 /** * Function name grabbed from: http://core.trac.wordpress.org/ticket/22624 * 2 lines of code from TutPlus: http://goo.gl/X4lmf */ if( !function_exists( 'current_user_has_role' ) ) { function current_user_has_role( $role ) { $current_user = new WP_User( wp_get_current_user()->ID ); $user_roles = $current_user->roles; $is_or_not = in_array( $role, $user_roles ); return $is_or_not; } }