Title: revoke_super_admin
Published: April 25, 2014
Last modified: May 20, 2026

---

# revoke_super_admin( int $user_id ): bool

## In this article

 * [Parameters](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#source)
 * [Hooks](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#hooks)
 * [Related](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#wp--skip-link--target)

Revokes Super Admin privileges.

## 󠀁[Parameters](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#parameters)󠁿

 `$user_id`intrequired

ID of the user Super Admin privileges to be revoked from.

## 󠀁[Return](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#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.

## 󠀁[Source](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#source)󠁿

    ```php
    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 ) {
    		$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;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/capabilities.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/capabilities.php#L1263)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/capabilities.php#L1263-L1300)

## 󠀁[Hooks](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#hooks)󠁿

 [do_action( ‘revoked_super_admin’, int $user_id )](https://developer.wordpress.org/reference/hooks/revoked_super_admin/)

Fires after the user’s Super Admin privileges are revoked.

 [do_action( ‘revoke_super_admin’, int $user_id )](https://developer.wordpress.org/reference/hooks/revoke_super_admin/)

Fires before the user’s Super Admin privileges are revoked.

## 󠀁[Related](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#related)󠁿

| Uses | Description | 
| [update_site_option()](https://developer.wordpress.org/reference/functions/update_site_option/)`wp-includes/option.php` |

Updates the value of an option that was already added for the current network.

  | 
| [get_userdata()](https://developer.wordpress.org/reference/functions/get_userdata/)`wp-includes/pluggable.php` |

Retrieves user info by user ID.

  | 
| [is_multisite()](https://developer.wordpress.org/reference/functions/is_multisite/)`wp-includes/load.php` |

Determines whether Multisite is enabled.

  | 
| [do_action()](https://developer.wordpress.org/reference/functions/do_action/)`wp-includes/plugin.php` |

Calls the callback functions that have been added to an action hook.

  | 
| [get_site_option()](https://developer.wordpress.org/reference/functions/get_site_option/)`wp-includes/option.php` |

Retrieve an option value for the current network based on name of option.

  |

[Show 3 more](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#)

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/revoke_super_admin/?output_format=md#changelog)󠁿

| Version | Description | 
| [6.9.0](https://developer.wordpress.org/reference/since/6.9.0/) | Super admin privileges can be revoked regardless of email address. | 
| [3.0.0](https://developer.wordpress.org/reference/since/3.0.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Frevoke_super_admin%2F)
before being able to contribute a note or feedback.