WC_Form_Handler::add_to_cart_handler_grouped() private WC 2.4.6
Handle adding grouped products to the cart.
{} Это метод класса: WC_Form_Handler{}
Хуки из метода
Возвращает
true/false. success or not
Использование
$result = WC_Form_Handler::add_to_cart_handler_grouped( $product_id );
- $product_id(число) (обязательный)
- Product ID to add to the cart.
Список изменений
С версии 2.4.6 | Введена. |
С версии 2.4.6 | Split from add_to_cart_action. |
Код WC_Form_Handler::add_to_cart_handler_grouped() WC Form Handler::add to cart handler grouped WC 4.9.2
private static function add_to_cart_handler_grouped( $product_id ) {
$was_added_to_cart = false;
$added_to_cart = array();
$items = isset( $_REQUEST['quantity'] ) && is_array( $_REQUEST['quantity'] ) ? wp_unslash( $_REQUEST['quantity'] ) : array(); // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
if ( ! empty( $items ) ) {
$quantity_set = false;
foreach ( $items as $item => $quantity ) {
$quantity = wc_stock_amount( $quantity );
if ( $quantity <= 0 ) {
continue;
}
$quantity_set = true;
// Add to cart validation.
$passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $item, $quantity );
// Suppress total recalculation until finished.
remove_action( 'woocommerce_add_to_cart', array( WC()->cart, 'calculate_totals' ), 20, 0 );
if ( $passed_validation && false !== WC()->cart->add_to_cart( $item, $quantity ) ) {
$was_added_to_cart = true;
$added_to_cart[ $item ] = $quantity;
}
add_action( 'woocommerce_add_to_cart', array( WC()->cart, 'calculate_totals' ), 20, 0 );
}
if ( ! $was_added_to_cart && ! $quantity_set ) {
wc_add_notice( __( 'Please choose the quantity of items you wish to add to your cart…', 'woocommerce' ), 'error' );
} elseif ( $was_added_to_cart ) {
wc_add_to_cart_message( $added_to_cart );
WC()->cart->calculate_totals();
return true;
}
} elseif ( $product_id ) {
/* Link on product archives */
wc_add_notice( __( 'Please choose a product to add to your cart…', 'woocommerce' ), 'error' );
}
return false;
}