Automattic\WooCommerce\StoreApi\Schemas\V1

CartSchema::get_item_response()publicWC 1.0

Convert a woo cart into an object suitable for the response.

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

Хуков нет.

Возвращает

Массив.

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

$CartSchema = new CartSchema();
$CartSchema->get_item_response( $cart );
$cart(\WC_Cart) (обязательный)
Cart class instance.

Код CartSchema::get_item_response() WC 8.7.0

public function get_item_response( $cart ) {
	$controller = new CartController();

	// Get cart errors first so if recalculations are performed, it's reflected in the response.
	$cart_errors = $this->get_cart_errors( $cart );

	// The core cart class will not include shipping in the cart totals if `show_shipping()` returns false. This can
	// happen if an address is required, or through the use of hooks. This tracks if shipping has actually been
	// calculated so we can avoid returning costs and rates prematurely.
	$has_calculated_shipping = $cart->show_shipping();

	// Get shipping packages to return in the response from the cart.
	$shipping_packages = $has_calculated_shipping ? $controller->get_shipping_packages() : [];

	// Get visible cross sells products.
	$cross_sells = array_filter( array_map( 'wc_get_product', $cart->get_cross_sells() ), 'wc_products_array_filter_visible' );

	return [
		'items'                   => $this->get_item_responses_from_schema( $this->item_schema, $cart->get_cart() ),
		'coupons'                 => $this->get_item_responses_from_schema( $this->coupon_schema, $cart->get_applied_coupons() ),
		'fees'                    => $this->get_item_responses_from_schema( $this->fee_schema, $cart->get_fees() ),
		'totals'                  => (object) $this->prepare_currency_response( $this->get_totals( $cart ) ),
		'shipping_address'        => (object) $this->shipping_address_schema->get_item_response( wc()->customer ),
		'billing_address'         => (object) $this->billing_address_schema->get_item_response( wc()->customer ),
		'needs_payment'           => $cart->needs_payment(),
		'needs_shipping'          => $cart->needs_shipping(),
		'payment_requirements'    => $this->extend->get_payment_requirements(),
		'has_calculated_shipping' => $has_calculated_shipping,
		'shipping_rates'          => $this->get_item_responses_from_schema( $this->shipping_rate_schema, $shipping_packages ),
		'items_count'             => $cart->get_cart_contents_count(),
		'items_weight'            => wc_get_weight( $cart->get_cart_contents_weight(), 'g' ),
		'cross_sells'             => $this->get_item_responses_from_schema( $this->cross_sells_item_schema, $cross_sells ),
		'errors'                  => $cart_errors,
		'payment_methods'         => array_values( wp_list_pluck( WC()->payment_gateways->get_available_payment_gateways(), 'id' ) ),
		self::EXTENDING_KEY       => $this->get_extended_data( self::IDENTIFIER ),
	];
}