Products_Controller::prepare_item_for_response( WP_Post $post, WP_REST_Request $request )

Summary

Prepares a single product output for response.


Parameters

$post

(WP_Post) (Required) Post object.

$request

(WP_REST_Request) (Required) Request object.


Return

(WP_REST_Response) Response object.


Source

File: src/BigCommerce/Rest/Products_Controller.php

	public function prepare_item_for_response( $post, $request ) {
		$backup_post     = isset( $GLOBALS['post'] ) ? $GLOBALS['post'] : null;
		$product         = new Product( $post->ID );
		$GLOBALS['post'] = $post;

		setup_postdata( $post );

		$schema = $this->get_item_schema();

		// Base fields for every post.
		$data = [];

		foreach ( $schema['properties'] as $key => $meta ) {
			if ( empty( $meta ) ) {
				continue;
			}
			$data[ $key ] = $this->get_item_property( $product, $key, $meta );
		}
		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
		$data    = $this->add_additional_fields_to_object( $data, $request );
		$data    = $this->filter_response_by_context( $data, $context );

		$GLOBALS['post'] = $backup_post;
		wp_reset_postdata();

		// Wrap the data in a response object.
		$response = rest_ensure_response( $data );

		/**
		 * Filters the product data for a response.
		 *
		 * @param \WP_REST_Response $response The response object.
		 * @param \WP_Post          $post     Post object.
		 * @param \WP_REST_Request  $request  Request object.
		 */
		return apply_filters( 'bigcommerce/rest/products/prepare_item_for_response', $response, $post, $request );
	}


User Contributed Notes

You must log in before being able to contribute a note or feedback.