Функция grant_super_admin()
используется для назначения привилегий супер-администратора пользователю в многосайтовой сети WordPress. В отличие от стандартных ролей (таких как «Администратор» или «Редактор»), супер-администратор не является отдельной ролью, а представляет собой расширенный набор прав, которые позволяют управлять всей сетью.
grant_super_admin( int $user_id ): bool
Параметры
- $user_id (int, обязательный): ID пользователя, которому нужно назначить права супер-администратора.
Возвращаемое значение
Функция возвращает true
, если права супер-админа успешно назначены, и false
в случае неудачи. Ошибка может возникнуть, если:
- Пользователь уже является супер-администратором.
- В сети определена глобальная переменная
$super_admins
, которая имеет приоритет над стандартной опциейsite_admins
.
Как работает супер-администратор
После назначения супер-админа пользователю его учетные данные сохраняются в базе данных WordPress. В таблице wp_sitemeta
содержится параметр site_admins
, который хранит логины всех пользователей-супер-админов:
$super_admins = get_site_option( 'site_admins' );
Если глобальная переменная $super_admins
установлена, она имеет приоритет над site_admins
, и функция grant_super_admin()
перестает работать. Управление супер-администраторами в этом случае осуществляется исключительно через $super_admins
.
Пример 1: Назначение супер-админа пользователю с ID 3
В этом примере назначим права супер-администратора пользователю с идентификатором 3
:
grant_super_admin( 3 );
Этот вызов добавит пользователя с ID 3
в список супер-администраторов, что позволит ему управлять всей сетью WordPress. Важно отметить, что данную операцию рекомендуется выполнять единожды, так как она изменяет глобальные параметры и не должна выполняться при каждом обновлении страницы.
Пример 2: Назначение и отзыв прав супер-админа при активации и деактивации плагина
Часто бывает полезно автоматически назначать или отзывать права супер-администратора при активации и деактивации плагина. В следующем примере при активации плагина пользователь с ID 4
получает права супер-админа, а при деактивации — теряет их:
// Назначаем супер-админа при активации
register_activation_hook( __FILE__, 'myplugin_activate' );
function myplugin_activate() {
grant_super_admin( 4 );
}
// Отзываем права супер-админа при деактивации
register_deactivation_hook( __FILE__, 'myplugin_deactivate' );
function myplugin_deactivate(){
revoke_super_admin( 4 );
}
Этот код добавляется в основной файл плагина и позволяет автоматически управлять привилегиями супер-админа для указанного пользователя.
Примечания
- Функция
revoke_super_admin()
: Для отзыва прав супер-админа используется функцияrevoke_super_admin( $user_id );
, которая удаляет привилегии супер-администратора у указанного пользователя. - Глобальная переменная
$super_admins
: Если в сети определена эта глобальная переменная, она имеет приоритет над настройками в базе данных, и функцияgrant_super_admin()
становится нерабочей. Все управление супер-админами в таком случае осуществляется через эту переменную. - Обновление опций: Функция
grant_super_admin()
работает на основеupdate_site_option()
, поэтому изменение прав супер-админа приводит к обновлению глобальных настроек сети.
Заключение
Функция grant_super_admin()
является полезным инструментом для управления правами в многосайтовой сети WordPress. Она позволяет быстро назначать пользователям права супер-администраторов, а при необходимости их легко отозвать с помощью revoke_super_admin()
.