Automattic\WooCommerce\StoreApi\Routes\V1
ShopperListItems::resolve_item_payload
Resolve the POST input into a uniform payload (product lookup id, variation, quantity).
Accepts either an existing cart_item_key, or direct product_id/variation_id/variation.
Method of the class: ShopperListItems{}
No Hooks.
Returns
Array{0:Int,1:Array,2:Int}. [ lookup_id, variation, quantity ].
Usage
// private - for code of main (parent) class only $result = $this->resolve_item_payload( $request ): array;
- $request(WP_REST_Request) (required)
- Request object.
ShopperListItems::resolve_item_payload() ShopperListItems::resolve item payload code WC 10.9.1
private function resolve_item_payload( \WP_REST_Request $request ): array {
$cart_item_key = (string) $request->get_param( 'cart_item_key' );
if ( $cart_item_key ) {
if ( ! did_action( 'woocommerce_load_cart_from_session' ) || ! wc()->cart ) {
wc_load_cart();
}
$cart_contents = wc()->cart->get_cart();
if ( empty( $cart_contents[ $cart_item_key ] ) ) {
throw new RouteException( 'woocommerce_rest_shopper_list_invalid_cart_item_key', esc_html__( 'No cart item exists for the supplied key.', 'woocommerce' ), 404 );
}
$line = $cart_contents[ $cart_item_key ];
$product_id = absint( $line['product_id'] ?? 0 );
$variation_id = absint( $line['variation_id'] ?? 0 );
$variation_attrs = isset( $line['variation'] ) && is_array( $line['variation'] ) ? $line['variation'] : array();
return array(
$variation_id ? $variation_id : $product_id,
$variation_attrs,
absint( $line['quantity'] ?? 1 ),
);
}//end if
$product_id = absint( $request->get_param( 'product_id' ) );
if ( ! $product_id ) {
throw new RouteException( 'woocommerce_rest_shopper_list_missing_item_input', esc_html__( 'Provide cart_item_key or product_id.', 'woocommerce' ), 400 );
}
$variation = wp_list_pluck( (array) $request->get_param( 'variation' ), 'value', 'attribute' );
return array(
$product_id,
(array) array_combine(
array_map( 'wc_variation_attribute_name', array_keys( $variation ) ),
array_values( $variation )
),
absint( $request->get_param( 'quantity' ) ),
);
}