BP_REST_Groups_Endpoint::get_items( WP_REST_Request $request )
Retrieve groups.
Description
Parameters
- $request
-
(Required) Full details about the request.
Return
(WP_REST_Response) | WP_Error List of groups object data.
Source
File: bp-groups/classes/class-bp-rest-groups-endpoint.php
public function get_items( $request ) { $args = array( 'type' => $request['type'], 'order' => $request['order'], 'fields' => $request['fields'], 'orderby' => $request['orderby'], 'user_id' => $request['user_id'], 'include' => $request['include'], 'parent_id' => $request['parent_id'], 'exclude' => $request['exclude'], 'search_terms' => $request['search'], 'meta_query' => $request['meta'], // phpcs:ignore 'group_type' => $request['group_type'], 'show_hidden' => $request['show_hidden'], 'per_page' => $request['per_page'], 'status' => $request['status'], 'page' => $request['page'], ); if ( empty( $request['parent_id'] ) ) { $args['parent_id'] = null; } // See if the user can see hidden groups. if ( isset( $request['show_hidden'] ) && true === (bool) $request['show_hidden'] && ! $this->can_see_hidden_groups( $request ) ) { $args['show_hidden'] = false; } if ( isset( $request['scope'] ) ) { if ( 'personal' === $request['scope'] ) { $args['user_id'] = ( ! empty( $request['user_id'] ) ? (int) $request['user_id'] : get_current_user_id() ); } } if ( ( empty( $request['scope'] ) || ( isset( $request['scope'] ) && 'all' === $request['scope'] ) ) && function_exists( 'bp_groups_get_excluded_group_ids_by_type' ) && ! empty( bp_groups_get_excluded_group_ids_by_type() ) ) { $args['exclude'] = array_unique( bp_groups_get_excluded_group_ids_by_type() ); } /** * 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_groups_get_items_query_args', $args, $request ); // Actually, query it. $groups = groups_get_groups( $args ); // Users need (at least, should we be more restrictive ?) to be logged in to use the edit context. if ( 'edit' === $request->get_param( 'context' ) && ! is_user_logged_in() ) { $request->set_param( 'context', 'view' ); } $retval = array(); foreach ( $groups['groups'] as $group ) { $retval[] = $this->prepare_response_for_collection( $this->prepare_item_for_response( $group, $request ) ); } $response = rest_ensure_response( $retval ); $response = bp_rest_response_add_total_headers( $response, $groups['total'], $args['per_page'] ); /** * Fires after a list of groups is fetched via the REST API. * * @param array $groups Fetched groups. * @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_groups_get_items', $groups, $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.