Add_To_Cart::handle_request( int $post_id, BigCommerceApiv3ApiCartApi $cart_api )
Summary
No summary available.Parameters
- $post_id
-
(int) (Required)
- $cart_api
-
(BigCommerceApiv3ApiCartApi) (Required)
Return
(void)
Source
File: src/BigCommerce/Cart/Add_To_Cart.php
public function handle_request( $post_id, CartApi $cart_api ) { if ( ! $this->validate_request( $post_id, $_POST ) ) { $error = new \WP_Error( 'unknown_product', __( 'We were unable to process your request. Please go back and try again.', 'bigcommerce' ) ); do_action( 'bigcommerce/form/error', $error, $_POST, home_url( '/' ) ); return; } $product = new Product( $post_id ); $product_id = $product->bc_id(); $variant_id = $this->get_variant_id( $product, $_POST ); $options = []; // Options are sanitized bellow $submitted_options = empty( $_POST[ 'option' ] ) ? [] : (array) $_POST[ 'option' ]; // phpcs:ignore $option_config = $product->options(); $modifier_config = $product->modifiers(); foreach ( $option_config as $config ) { if ( array_key_exists( $config[ 'id' ], $submitted_options ) ) { $options[ $config[ 'id' ] ] = absint( $submitted_options[ $config[ 'id' ] ] ); } } foreach ( $modifier_config as $config ) { if ( array_key_exists( $config[ 'id' ], $submitted_options ) ) { $options[ $config[ 'id' ] ] = $this->sanitize_option( $submitted_options[ $config[ 'id' ] ], $config ); } } $quantity = array_key_exists( 'quantity', $_POST ) ? absint( $_POST[ 'quantity' ] ) : 1; $cart = new Cart( $cart_api ); try { $response = $cart->add_line_item( $product_id, $options, $quantity ); $this->handle_response( $response, $cart, $post_id, $product_id, $variant_id ); } catch ( ApiException $e ) { $this->handle_exception( $e, $cart ); } }