Как ограничить количество товаров в корзине WooCommerce одним для конкретного товара

В моем пользовательском шаблоне Woocommerce я хочу ограничить количество продукта до 1.

Я работаю с Пустая корзина при загрузке страницы, позволяющая добавить в корзину в WooCommerce ответ на мой предыдущий вопрос.

Вот что у меня есть:

 <?php 
$current_product_id = 5; // The product ID 
$cart               = WC()->cart; // The WC_Cart Object
       $quantity = $cart_item['quantity'];//the quantity
// When cart is not empty 
if ( ! $cart->is_empty() ) {
    // Loop through cart items
    foreach( $cart->get_cart() as $cart_item_key => $cart_item ) {
        // If the cart item is not the current defined product ID
        if( $current_product_id != $cart_item['product_id'] ) {
            $cart->remove_cart_item( $cart_item_key ); // remove it from cart
        }
}
 if( $quantity >=1) {
    $cart->remove_cart_item( $cart_item_key ); // remove it from cart
 } }}
?>

Это вроде как работает. Но я хочу оформить заказ на той же странице, и с этим кодом проверка не обновляется, когда продукт добавляется в корзину.


person tiny    schedule 08.07.2020    source источник
comment
Не читая внимательно ваш вопрос или код. Разве это не вариант, чтобы установить флажок «Активировать, если этот товар можно приобрести только один раз за заказ» в параметрах инвентаризации продукта?   -  person 7uc1f3r    schedule 09.07.2020
comment
Это сработает.   -  person tiny    schedule 09.07.2020


Ответы (1)


Чтобы ограничить количество до 1, вы будете использовать метод WC_cart set_quantity() следующим образом:

<?php 
$current_product_id = 5; // The product ID 
$cart               = WC()->cart; // The WC_Cart Object

// When cart is not empty 
if ( ! $cart->is_empty() ) {
    // Loop through cart items
    foreach( $cart->get_cart() as $cart_item_key => $cart_item ) {
        // If the cart item is not the current defined product ID
        if( $current_product_id != $cart_item['product_id'] ) {
            $cart->remove_cart_item( $cart_item_key ); // remove it from cart
        } 
        // If the cart item is the current defined product ID and quantity is more than 1
        elseif( $cart_item['quantity'] > 1 ) {
            $cart->set_quantity( $cart_item_key, 1 ); // Set the quantity to 1
        }
    }
}
?>

Он должен работать.

person LoicTheAztec    schedule 08.07.2020