can_management_roles() ) { return; } $user_roles = isset( $user->roles ) ? implode( "','", $user->roles ) : ''; ?> can_management_roles() ) { return; } $wp_user = new \WP_User( $user_id ); if ( isset( $wp_user->data->user_login ) ) { $user_login = $wp_user->data->user_login; // Get access to editable roles global $wp_roles; if ( isset( $_REQUEST['wpda_role'] ) && is_array( $_REQUEST['wpda_role'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- verified on main page // Process roles $sanitized_roles = array(); foreach ( $_REQUEST['wpda_role'] as $new_user_role ) { // phpcs:ignore -- verified on main page $sanitized_new_user_role = sanitize_text_field( wp_unslash( $new_user_role ) ); // input var okay. $wp_user->add_role( $sanitized_new_user_role ); $sanitized_roles[ $sanitized_new_user_role ] = true; } // Remove unselected roles foreach ( $wp_roles->roles as $role => $val ) { if ( ! isset( $sanitized_roles[ $role ] ) ) { $wp_user->remove_role( $role ); } } } else { // REMOVED!!! // When plugin role management is enabled, this removes all user roles when a user updates his profile. // foreach ( $wp_roles->roles as $role => $val ) { // $wp_user->remove_role( $role ); // } } } } /** * Change role label in user list table * * @param $columns * * @return mixed */ public function multiple_roles_label( $columns ) { if ( ! $this->can_management_roles() ) { return $columns; } $columns['role'] = __( 'Role(s)', 'wp-data-access' ); return $columns; } } }