grant_super_admin()
云策文档标注
概述
grant_super_admin() 函数用于在 WordPress 多站点环境中授予用户超级管理员权限。它通过更新 site_admins 选项来实现,并包含相关钩子和错误处理。
关键要点
- 参数:$user_id(整数,必需),指定要授予超级管理员权限的用户 ID。
- 返回值:成功时返回 true,失败时返回 false。失败可能发生在用户已是超级管理员或 $super_admins 全局变量被定义时。
- 功能:仅在多站点环境中有效,如果 $GLOBALS['super_admins'] 已设置或非多站点,则直接返回 false。
- 钩子:包括 grant_super_admin(授予前触发)和 granted_super_admin(授予后触发),用于扩展功能。
- 内部逻辑:直接获取 site_admins 选项,检查用户是否已在列表中,若不在则添加并更新选项。
代码示例
grant_super_admin( $user_id );注意事项
- 此函数仅适用于 WordPress 多站点安装,在单站点环境中无效。
- 如果全局变量 $super_admins 被定义,函数将无法授予权限并返回 false。
- 授予权限前会触发 grant_super_admin 钩子,授予后会触发 granted_super_admin 钩子,便于开发者进行自定义操作。
原文内容
Grants Super Admin privileges.
Parameters
$user_idintrequired-
ID of the user to be granted Super Admin privileges.
Source
function grant_super_admin( $user_id ) {
// If global super_admins override is defined, there is nothing to do here.
if ( isset( $GLOBALS['super_admins'] ) || ! is_multisite() ) {
return false;
}
/**
* Fires before the user is granted Super Admin privileges.
*
* @since 3.0.0
*
* @param int $user_id ID of the user that is about to be granted Super Admin privileges.
*/
do_action( 'grant_super_admin', $user_id );
// Directly fetch site_admins instead of using get_super_admins().
$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 );
/**
* Fires after the user is granted Super Admin privileges.
*
* @since 3.0.0
*
* @param int $user_id ID of the user that was granted Super Admin privileges.
*/
do_action( 'granted_super_admin', $user_id );
return true;
}
return false;
}
Hooks
- do_action( ‘granted_super_admin’, int $user_id )
-
Fires after the user is granted Super Admin privileges.
- do_action( ‘grant_super_admin’, int $user_id )
-
Fires before the user is granted Super Admin privileges.
Changelog
| Version | Description |
|---|---|
| 3.0.0 | Introduced. |