BP_REST_Members_Endpoint::get_items( WP_REST_Request $request )
Retrieve users.
Description
Parameters
- $request
-
(Required) Full details about the request.
Return
(WP_REST_Response) | WP_Error
Source
File: bp-members/classes/class-bp-rest-members-endpoint.php
public function get_items( $request ) { $args = array( 'type' => $request['type'], 'user_id' => $request['user_id'], 'user_ids' => $request['user_ids'], 'xprofile_query' => $request['xprofile'], 'include' => $request['include'], 'exclude' => $request['exclude'], 'member_type' => $request['member_type'], 'search_terms' => $request['search'], 'per_page' => $request['per_page'], 'page' => $request['page'], ); if ( empty( $request['user_ids'] ) ) { $args['user_ids'] = false; } if ( empty( $request['exclude'] ) ) { $args['exclude'] = false; } if ( empty( $request['include'] ) ) { $args['include'] = false; } if ( empty( $request['xprofile'] ) ) { $args['xprofile_query'] = false; } if ( empty( $request['member_type'] ) ) { $args['member_type'] = ''; } if ( ! empty( $request['scope'] ) && 'all' !== $request['scope'] ) { if ( 'following' === $request['scope'] ) { $user_id = ( ! empty( $request['user_id'] ) ? (int) $request['user_id'] : get_current_user_id() ); $following_ids = $this->rest_bp_get_following_ids( array( 'user_id' => $user_id ) ); if ( ! empty( $following_ids ) ) { $args['include'] = $following_ids; unset( $args['user_id'] ); } else { $response = rest_ensure_response( array() ); return bp_rest_response_add_total_headers( $response, 0, $args['per_page'] ); } } if ( 'followers' === $request['scope'] ) { $user_id = ( ! empty( $request['user_id'] ) ? (int) $request['user_id'] : get_current_user_id() ); $followers_ids = $this->rest_bp_get_follower_ids( array( 'user_id' => $user_id ) ); if ( ! empty( $followers_ids ) ) { $args['include'] = $followers_ids; unset( $args['user_id'] ); } else { $response = rest_ensure_response( array() ); return bp_rest_response_add_total_headers( $response, 0, $args['per_page'] ); } } if ( 'personal' === $request['scope'] ) { $args['user_id'] = ( ! empty( $request['user_id'] ) ? (int) $request['user_id'] : get_current_user_id() ); } } if ( ! empty( $request['bp_ps_search'] ) ) { $results = $this->rest_bp_ps_search( $request['bp_ps_search'] ); if ( $results['validated'] ) { $users = $results['users']; if ( isset( $args['include'] ) && ! empty( $args['include'] ) ) { $included = explode( ',', $args['include'] ); $users = array_intersect( $users, $included ); if ( count( $users ) === 0 ) { $users = array( 0 ); } } $users = apply_filters( 'bp_ps_search_results', $users ); $args['include'] = implode( ',', $users ); } } if ( ( empty( $request['scope'] ) || ( isset( $request['scope'] ) && 'all' === $request['scope'] ) || empty( $request['bp_ps_search'] ) ) && function_exists( 'bp_get_users_of_removed_member_types' ) && ! empty( bp_get_users_of_removed_member_types() ) ) { $args['exclude'] = bp_get_users_of_removed_member_types(); } /** * Filter the query arguments for the request. * * @param array $args Key value array of query var to query value. * @param WP_REST_Request $request The request sent to the API. * * @since 0.1.0 */ $args = apply_filters( 'bp_rest_members_get_items_query_args', $args, $request ); // Actually, query it. $member_query = new BP_User_Query( $args ); $members = array_values( $member_query->results ); $retval = array(); foreach ( $members as $member ) { $retval[] = $this->prepare_response_for_collection( $this->prepare_item_for_response( $member, $request ) ); } $response = rest_ensure_response( $retval ); $response = bp_rest_response_add_total_headers( $response, $member_query->total_users, $args['per_page'] ); /** * Fires after a list of members is fetched via the REST API. * * @param array $members Fetched members. * @param WP_REST_Response $response The response data. * @param WP_REST_Request $request The request sent to the API. * * @since 0.1.0 */ do_action( 'bp_rest_members_get_items', $members, $response, $request ); return $response; }
Changelog
Version | Description |
---|---|
0.1.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.