Ограничить количество товаров в Woocommerce

Я использую Woocommerce и мне нужно следующее:

  1. Поскольку товар продается в другую страну, и таможня этой страны допускает всего 6 штук, поэтому я должен запретить клиентам заказывать более 6 наименований (товаров).

  2. 6 — это общее количество предметов или продуктов. Клиент может заказать 1 товар в количестве 6 или 2 товара по 3 штуки в каждом. Таможня разрешит только 6 единиц товара.

  3. Если в корзине более 6 товаров, должно появиться предупреждение, не позволяющее клиенту продолжить оформление заказа.

Можно ли ограничить количество товаров в корзине до 6 и отображать сообщение при превышении этого предела?

3

Решение

Есть 2 действия, чтобы проверить и контролировать, если вы хотите ограничить элементы корзины:

  • Когда товар добавлен в корзину (на страницах магазина и на страницах товара)
  • Когда количество обновляется на странице корзины

Использование пользовательской функции подключено woocommerce_add_to_cart_validation фильтр ловушка, позволит вам ограничить элементы корзины до 6 макс и отображать пользовательское сообщение, когда этот предел превышен:

// Checking and validating when products are added to cart
add_filter( 'woocommerce_add_to_cart_validation', 'only_six_items_allowed_add_to_cart', 10, 3 );

function only_six_items_allowed_add_to_cart( $passed, $product_id, $quantity ) {

$cart_items_count = WC()->cart->get_cart_contents_count();
$total_count = $cart_items_count + $quantity;

if( $cart_items_count >= 6 || $total_count > 6 ){
// Set to false
$passed = false;
// Display a message
wc_add_notice( __( "You can’t have more than 6 items in cart", "woocommerce" ), "error" );
}
return $passed;
}

Использование пользовательской функции подключено woocommerce_update_cart_validation Фильтр-ловушка, позволит вам контролировать обновление количества товаров в корзине до предела в 6 товаров и отображать пользовательское сообщение при превышении этого предела:

// Checking and validating when updating cart item quantities when products are added to cart
add_filter( 'woocommerce_update_cart_validation', 'only_six_items_allowed_cart_update', 10, 4 );
function only_six_items_allowed_cart_update( $passed, $cart_item_key, $values, $updated_quantity ) {

$cart_items_count = WC()->cart->get_cart_contents_count();
$original_quantity = $values['quantity'];
$total_count = $cart_items_count - $original_quantity + $updated_quantity;

if( $cart_items_count > 6 || $total_count > 6 ){
// Set to false
$passed = false;
// Display a message
wc_add_notice( __( "You can’t have more than 6 items in cart", "woocommerce" ), "error" );
}
return $passed;
}

Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.

Этот код протестирован и работает

7

Другие решения

Вы можете добавить дополнительные параметры проверки при проверке товара, добавляемого в корзину. woocommerce_add_to_cart_validation ожидает true или же false Возвращаемое значение зависит от того, в порядке ли продукт для добавления в корзину:

/**
* When an item is added to the cart, check total cart quantity
*/
function so_21363268_limit_cart_quantity( $valid, $product_id, $quantity ) {

$max_allowed = 6;
$current_cart_count = WC()->cart->get_cart_contents_count();

if( ( $current_cart_count > $max_allowed || $current_cart_count + $quantity > $max_allowed ) && $valid ){
wc_add_notice( sprint( __( 'Whoa hold up. You can only have %d items in your cart', 'your-plugin-textdomain' ), $max ), 'error' );
$valid = false;
}

return $valid;

}
add_filter( 'woocommerce_add_to_cart_validation', 'so_21363268_limit_cart_quantity', 10, 3 );
3

По вопросам рекламы [email protected]