WP_User::set_role( string $role )
Set the role of the user.
Description Description
This will remove the previous roles of the user and assign the user the new one. You can set the role to an empty string and it will remove all of the roles from the user.
Parameters Parameters
- $role
-
(string) (Required) Role name.
Source Source
File: wp-includes/class-wp-user.php
public function set_role( $role ) { if ( 1 == count( $this->roles ) && $role == current( $this->roles ) ) { return; } foreach ( (array) $this->roles as $oldrole ) { unset( $this->caps[ $oldrole ] ); } $old_roles = $this->roles; if ( ! empty( $role ) ) { $this->caps[ $role ] = true; $this->roles = array( $role => true ); } else { $this->roles = false; } update_user_meta( $this->ID, $this->cap_key, $this->caps ); $this->get_role_caps(); $this->update_user_level_from_caps(); /** * Fires after the user's role has changed. * * @since 2.9.0 * @since 3.6.0 Added $old_roles to include an array of the user's previous roles. * * @param int $user_id The user ID. * @param string $role The new role. * @param string[] $old_roles An array of the user's previous roles. */ do_action( 'set_user_role', $this->ID, $role, $old_roles ); }
Expand full source code Collapse full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
2.0.0 | Introduced. |
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
This method cannot be used to persist custom roles. When you try to add your role to a user with
or
you are not be able to delete the roles of an user with
Others looking to set the role to superadmin within a multisite setup: set_role doesn’t work in this case.
For becoming a super admin you need:
grant_super_admin($ID);