Как в woocommerce сделать так что бы в корзине не было более 1(одного) товара?
Решено
Здравствуйте, скажите как сделать так что бы в корзину плагина woocommerce можно было добавлять только одни товар? Мне нужно что бы в любом случае, даже если уже есть товар в корзине — он удалялся, а новый товар добавлялся в корзину. Таким образом, пользователь всегда покупает то что выбрал последний раз или только что.
2 Ответ(ы)
Ответ
Правильное решение:
/** * При добавлении продукта в корзину - очищаем корзину * */ function woo_custom_add_to_cart($valid, $product_id, $quantity) { global $woocommerce; // получим содержание корзины $cart = $woocommerce->cart->empty_cart(); // проверим нет ли ошибок и есть ли что то в корзине if (!empty($cart) && $valid) { // в корзине что то есть, ошибок нет // очистим корзину $woocommerce->cart->empty_cart(); // сообщим что все хорошо return $valid; } // сообщим что все хорошо return $valid; } add_filter('woocommerce_add_to_cart_validation', 'woo_custom_add_to_cart', 10, 3);
Следующий код очищает корзину в том случае если пользователь добавляет что то в корзину.
Процесс происходит перед тем как новый товар добавится.
/** * При добавлении продукта в корзину - очищаем корзину * (убираем продукты которые там есть) * * @param obj $cart_item_data - данные о продуктах в корзине */ function woo_custom_add_to_cart($cart_item_data) { global $woocommerce; $woocommerce->cart->empty_cart(); // Do nothing with the data and return return $cart_item_data; } add_filter('woocommerce_add_cart_item_data', 'woo_custom_add_to_cart');
ЕСЛИ ИСПОЛЬЗОВАТЬ ДАННЫЙ КОД БЕЗ ИЗМЕНЕНИЙ — КОРЗИНА ОЧИЩАЕТСЯ ВО ВРЕМЯ ОПЛАТЫ — И ОПЛАТА НЕ ПРОИЗОЙДЕТ!