WordPress Version: 5.5
/**
* Revokes Super Admin privileges.
*
* @since 3.0.0
*
* @global array $super_admins
*
* @param int $user_id ID of the user Super Admin privileges to be revoked from.
* @return bool True on success, false on failure. This can fail when the user's email
* is the network admin email or when the `$super_admins` global is defined.
*/
function revoke_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's Super Admin privileges are revoked.
*
* @since 3.0.0
*
* @param int $user_id ID of the user Super Admin privileges are being revoked from.
*/
do_action('revoke_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 && 0 !== strcasecmp($user->user_email, get_site_option('admin_email'))) {
$key = array_search($user->user_login, $super_admins, true);
if (false !== $key) {
unset($super_admins[$key]);
update_site_option('site_admins', $super_admins);
/**
* Fires after the user's Super Admin privileges are revoked.
*
* @since 3.0.0
*
* @param int $user_id ID of the user Super Admin privileges were revoked from.
*/
do_action('revoked_super_admin', $user_id);
return true;
}
}
return false;
}