Функция revoke_super_admin()
используется для отзыва прав супер-администратора у определенного пользователя в многосайтовой сети WordPress. Это удобно, когда необходимо ограничить доступ пользователя к настройкам сети или пересмотреть права, чтобы они соответствовали текущим требованиям безопасности или внутренней политики.
revoke_super_admin( int $user_id ): bool
Параметры
- $user_id (int, обязательный): ID пользователя, у которого необходимо отозвать права супер-администратора.
Возвращаемое значение
Функция возвращает true
, если права супер-администратора успешно отозваны, и false
при неудаче. Возможные причины отказа:
- Email пользователя совпадает с email администратора сети (то есть указан в настройках сети).
- В сети установлена глобальная переменная
$super_admins
, которая имеет приоритет над настройками базы данных, и управление супер-админами полностью осуществляется через неё.
Особенности работы
Отозвав права супер-администратора у пользователя, его учетная запись удаляется из списка супер-администраторов, хранящегося в базе данных. Этот список обычно хранится в таблице wp_sitemeta
, в опции site_admins
.
Если в сети определена глобальная переменная $super_admins
, она имеет приоритет над значением в базе данных, и revoke_super_admin()
перестает работать. В этом случае функция не сможет управлять супер-администраторами, так как этот процесс полностью контролируется через глобальную переменную.
Пример 1: Отзыв прав супер-администратора у пользователя с ID 7
Отзовем права супер-админа у пользователя с идентификатором 7
:
revoke_super_admin( 7 );
Этот вызов удаляет пользователя с ID 7
из списка супер-администраторов, тем самым ограничивая его доступ к настройкам всей сети.
Пример 2: Автоматический отзыв прав при деактивации плагина
В следующем примере права супер-админа назначаются пользователю при активации плагина и отзываются при его деактивации. Это полезно для временных прав супер-администратора, которые требуются только на время работы плагина.
// Назначаем супер-админа при активации плагина
register_activation_hook( __FILE__, 'custom_plugin_activate' );
function custom_plugin_activate() {
grant_super_admin( 9 );
}
// Отзываем права супер-админа при деактивации плагина
register_deactivation_hook( __FILE__, 'custom_plugin_deactivate' );
function custom_plugin_deactivate(){
revoke_super_admin( 9 );
}
Этот код добавляется в основной файл плагина и позволяет управлять правами супер-админа для пользователя с ID 9
, в зависимости от состояния плагина.
Важные замечания
- Глобальная переменная
$super_admins
: Если эта переменная установлена, она полностью контролирует список супер-администраторов, и функцияrevoke_super_admin()
работать не будет. - Администратор сети: Если email пользователя совпадает с email администратора сети, права супер-админа нельзя отозвать через эту функцию, поскольку система расценивает его как основной контакт сети.
- Управление через
site_admins
: При отсутствии глобальной переменной$super_admins
функция обновляет опциюsite_admins
, хранящуюся в базе данных.
Заключение
Функция revoke_super_admin()
является простым и эффективным инструментом для управления доступом супер-администраторов в многосайтовой сети WordPress. Она позволяет отзыв прав в зависимости от необходимости, а также обеспечивает гибкость в управлении пользователями на уровне сети.