Функция GRANT_SUPER_ADMIN() в WordPress
Эта функция предназначена для предоставления привилегий супер-администратора пользователю в многосайтовом WordPress.
Как работает функция
Функция использует update_site_option(), чтобы обновить настройки сайта управления пользователями.
Хуки функции
Функция включает следующие хуки:
grant_super_admin— вызывается перед тем, как пользователю будут предоставлены права супер-администратора.granted_super_admin— вызывается после того, как права были предоставлены.
Возвращаемое значение
Функция возвращает:
true— если права успешно предоставлены,false— если произошла ошибка, например, если пользователь уже является супер-администратором или если глобальный массив$super_adminsопределен.
Использование функции
Чтобы использовать функцию, нужно вызвать её с идентификатором пользователя, которому вы хотите предоставить права супер-администратора.
grant_super_admin( $user_id );
где:
$user_id(int) — обязательный параметр, идентификатор пользователя, которому назначаются права супер-администратора.
Примеры использования
Пример 1: Предоставление прав супер-администратора пользователю с ID 5
Рекомендуется вызывать эту функцию только один раз, а не каждый раз при загрузке страницы, так как это изменяет значение параметра.
grant_super_admin( 5 );
Пример 2: Назначение и отзыв прав супер-администратора при активации/деактивации плагина
register_activation_hook( __FILE__, 'myplugin_activate' );
register_deactivation_hook( __FILE__, 'myplugin_deactivate' );
function myplugin_activate() {
// Предоставляем права
grant_super_admin( 5 );
}
function myplugin_deactivate() {
// Отзываем права
revoke_super_admin( 5 );
}
Заметки
- Глобальная переменная:
$super_admins— это массив, в котором хранятся идентификаторы супер-администраторов.
Изменения в версии
Функция была добавлена в версии 3.0.0 WordPress.
Код функции
Вот как реализована функция в файле wp-includes/capabilities.php:
function grant_super_admin( $user_id ) {
// Если глобальный массив super_admins определен, ничего делать не нужно.
if ( isset( $GLOBALS['super_admins'] ) || ! is_multisite() ) {
return false;
}
/**
* Вызывается перед тем, как пользователю предоставляются права супер-администратора.
*
* @param int $user_id ID пользователя, которому предоставляются права.
*/
do_action( 'grant_super_admin', $user_id );
// Получаем текущих супер-администраторов.
$super_admins = get_site_option( 'site_admins', array( 'admin' ) );
$user = get_userdata( $user_id );
if ( $user && ! in_array( $user->user_login, $super_admins, true ) ) {
$super_admins[] = $user->user_login;
update_site_option( 'site_admins', $super_admins );
/**
* Вызывается после предоставления прав супер-администратора.
*
* @param int $user_id ID пользователя, которому были предоставлены права.
*/
do_action( 'granted_super_admin', $user_id );
return true;
}
return false;
}
Связанные функции
Вот некоторые функции, которые могут быть полезны при работе с ролями и возможностями пользователей в WordPress:
add_role()— добавляет новую роль.remove_role()— удаляет существующую роль.current_user_can()— проверяет, имеет ли текущий пользователь определенные права.is_super_admin()— проверяет, является ли пользователь супер-администратором.
Эти функции помогут вам управлять правами пользователей и их ролями в WordPress, особенно в многосайтовом режиме.