namespace, '/users', array( array( 'methods' => 'GET', 'callback' => array( $this, 'index' ), 'permission_callback' => array( $this, 'can_read' ), 'args' => array( 'search' => array( 'type' => 'string' ), ), ), ) ); } /** * @param WP_REST_Request $request The request. */ public function index( WP_REST_Request $request ): WP_REST_Response { $search = sanitize_text_field( (string) ( $request->get_param( 'search' ) ?? '' ) ); $query = new WP_User_Query( array( 'capability' => 'plugixa_crm_manage', 'number' => self::LIMIT, 'orderby' => 'display_name', 'order' => 'ASC', 'fields' => array( 'ID', 'display_name' ), 'search' => '' !== $search ? '*' . $search . '*' : '', // Search by the name a picker displays, not by login or email. 'search_columns' => array( 'display_name' ), ) ); $users = array_map( static fn( $user ): array => array( 'id' => (int) $user->ID, 'name' => (string) $user->display_name, ), (array) $query->get_results() ); return $this->ok( $users ); } }