WC_REST_Webhooks_V1_Controller::get_items()publicWC 1.0

Get all webhooks.

Метод класса: WC_REST_Webhooks_V1_Controller{}

Хуки из метода

Возвращает

WP_Error|WP_REST_Response.

Использование

$WC_REST_Webhooks_V1_Controller = new WC_REST_Webhooks_V1_Controller();
$WC_REST_Webhooks_V1_Controller->get_items( $request );
$request(WP_REST_Request) (обязательный)
Full details about the request.

Код WC_REST_Webhooks_V1_Controller::get_items() WC 8.7.0

public function get_items( $request ) {
	$args            = array();
	$args['order']   = $request['order'];
	$args['orderby'] = $request['orderby'];
	$args['status']  = 'all' === $request['status'] ? '' : $request['status'];
	$args['include'] = implode( ',', $request['include'] );
	$args['exclude'] = implode( ',', $request['exclude'] );
	$args['limit']   = $request['per_page'];
	$args['search']  = $request['search'];
	$args['before']  = $request['before'];
	$args['after']   = $request['after'];

	if ( empty( $request['offset'] ) ) {
		$args['offset'] = 1 < $request['page'] ? ( $request['page'] - 1 ) * $args['limit'] : 0;
	}

	/**
	 * Filter arguments, before passing to WC_Webhook_Data_Store->search_webhooks, when querying webhooks via the REST API.
	 *
	 * @param array           $args    Array of arguments for $wpdb->get_results().
	 * @param WP_REST_Request $request The current request.
	 */
	$prepared_args = apply_filters( 'woocommerce_rest_webhook_query', $args, $request );
	unset( $prepared_args['page'] );
	$prepared_args['paginate'] = true;

	// Get the webhooks.
	$webhooks    = array();
	$data_store  = WC_Data_Store::load( 'webhook' );
	$results     = $data_store->search_webhooks( $prepared_args );
	$webhook_ids = $results->webhooks;

	foreach ( $webhook_ids as $webhook_id ) {
		$data       = $this->prepare_item_for_response( $webhook_id, $request );
		$webhooks[] = $this->prepare_response_for_collection( $data );
	}

	$response       = rest_ensure_response( $webhooks );
	$per_page       = (int) $prepared_args['limit'];
	$page           = ceil( ( ( (int) $prepared_args['offset'] ) / $per_page ) + 1 );
	$total_webhooks = $results->total;
	$max_pages      = $results->max_num_pages;
	$base           = add_query_arg( $request->get_query_params(), rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ) );

	$response->header( 'X-WP-Total', $total_webhooks );
	$response->header( 'X-WP-TotalPages', $max_pages );

	if ( $page > 1 ) {
		$prev_page = $page - 1;
		if ( $prev_page > $max_pages ) {
			$prev_page = $max_pages;
		}
		$prev_link = add_query_arg( 'page', $prev_page, $base );
		$response->link_header( 'prev', $prev_link );
	}
	if ( $max_pages > $page ) {
		$next_page = $page + 1;
		$next_link = add_query_arg( 'page', $next_page, $base );
		$response->link_header( 'next', $next_link );
	}

	return $response;
}