The user_register
hook passes the parameter $user_id
to your function. Get the login name after instantiating a user object with get_userdata( $user_id )
.
Update the assigned user role with wp_update_user
. Alternatively, you can use add_role
to assign the new role in addition to the currently assigned role instead of removing the currently defined role with wp_update_user
.
add_action( 'user_register', 'abc_assign_role' );
function abc_assign_role( $user_id ) {
// Instantiate user object.
$userobj = get_userdata( $user_id );
// Define new role using the login name of this user object.
$new_role = $userobj->user_login;
// Create the role.
add_role(
$new_role,
__( $new_role ),
array(
'read' => true,
'edit_posts' => true,
'delete_posts' => false,
)
);
// Assign a new role to this user, replacing the currently assigned role.
wp_update_user( array( 'ID' => $user_id, 'role' => $new_role ) );
// Assign additional role to the user, leaving the default role that is currently assigned to the user.
// $userobj->add_role( $new_role );
}