WordPress at Your Fingertips
function is not described

Automattic\WooCommerce\Blocks\StoreApi\Routes

CartUpdateCustomer::get_route_post_response() protected WC 1.0

Handle the request and return a valid response for this endpoint.

{} It's a method of the class: CartUpdateCustomer{}

No Hooks.

Return

\WP_REST_Response.

Usage

// protected - for code of main (parent) or child class
$result = $this->get_route_post_response( $request );
$request(WP_REST_Request) (required)
Request object.

Code of CartUpdateCustomer::get_route_post_response() WC 5.8.0

protected function get_route_post_response( \WP_REST_Request $request ) {
	$cart     = $this->cart_controller->get_cart_instance();
	$billing  = isset( $request['billing_address'] ) ? $request['billing_address'] : [];
	$shipping = isset( $request['shipping_address'] ) ? $request['shipping_address'] : [];

	// If the cart does not need shipping, shipping address is forced to match billing address unless defined.
	if ( ! $cart->needs_shipping() && ! isset( $request['shipping_address'] ) ) {
		$shipping = isset( $request['billing_address'] ) ? $request['billing_address'] : [
			'first_name' => wc()->customer->get_billing_first_name(),
			'last_name'  => wc()->customer->get_billing_last_name(),
			'company'    => wc()->customer->get_billing_company(),
			'address_1'  => wc()->customer->get_billing_address_1(),
			'address_2'  => wc()->customer->get_billing_address_2(),
			'city'       => wc()->customer->get_billing_city(),
			'state'      => wc()->customer->get_billing_state(),
			'postcode'   => wc()->customer->get_billing_postcode(),
			'country'    => wc()->customer->get_billing_country(),
			'phone'      => wc()->customer->get_billing_phone(),
		];
	}
	wc()->customer->set_props(
		array(
			'billing_first_name'  => isset( $billing['first_name'] ) ? $billing['first_name'] : null,
			'billing_last_name'   => isset( $billing['last_name'] ) ? $billing['last_name'] : null,
			'billing_company'     => isset( $billing['company'] ) ? $billing['company'] : null,
			'billing_address_1'   => isset( $billing['address_1'] ) ? $billing['address_1'] : null,
			'billing_address_2'   => isset( $billing['address_2'] ) ? $billing['address_2'] : null,
			'billing_city'        => isset( $billing['city'] ) ? $billing['city'] : null,
			'billing_state'       => isset( $billing['state'] ) ? $billing['state'] : null,
			'billing_postcode'    => isset( $billing['postcode'] ) ? $billing['postcode'] : null,
			'billing_country'     => isset( $billing['country'] ) ? $billing['country'] : null,
			'billing_phone'       => isset( $billing['phone'] ) ? $billing['phone'] : null,
			'billing_email'       => isset( $request['billing_address'], $request['billing_address']['email'] ) ? $request['billing_address']['email'] : null,
			'shipping_first_name' => isset( $shipping['first_name'] ) ? $shipping['first_name'] : null,
			'shipping_last_name'  => isset( $shipping['last_name'] ) ? $shipping['last_name'] : null,
			'shipping_company'    => isset( $shipping['company'] ) ? $shipping['company'] : null,
			'shipping_address_1'  => isset( $shipping['address_1'] ) ? $shipping['address_1'] : null,
			'shipping_address_2'  => isset( $shipping['address_2'] ) ? $shipping['address_2'] : null,
			'shipping_city'       => isset( $shipping['city'] ) ? $shipping['city'] : null,
			'shipping_state'      => isset( $shipping['state'] ) ? $shipping['state'] : null,
			'shipping_postcode'   => isset( $shipping['postcode'] ) ? $shipping['postcode'] : null,
			'shipping_country'    => isset( $shipping['country'] ) ? $shipping['country'] : null,
		)
	);

	$shipping_phone_value = isset( $shipping['phone'] ) ? $shipping['phone'] : null;

	// @todo Remove custom shipping_phone handling (requires WC 5.6+)
	if ( is_callable( [ wc()->customer, 'set_shipping_phone' ] ) ) {
		wc()->customer->set_shipping_phone( $shipping_phone_value );
	} else {
		wc()->customer->update_meta_data( 'shipping_phone', $shipping_phone_value );
	}

	wc()->customer->save();

	$this->calculate_totals();
	$this->maybe_update_order();

	return rest_ensure_response( $this->schema->get_item_response( $cart ) );
}