Как в woocommerce сделать так что бы в корзине не было более 1(одного) товара?

Решено

Здравствуйте, скажите как сделать так что бы в корзину плагина woocommerce можно было добавлять только одни товар? Мне нужно что бы в любом случае, даже если уже есть товар в корзине — он удалялся, а новый товар добавлялся в корзину. Таким образом, пользователь всегда покупает то что выбрал последний раз или только что.

Добавить Комментарий
Ответ

Правильное решение:

 /**
 * При добавлении продукта в корзину - очищаем корзину
 *
 */
 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');
 

ЕСЛИ ИСПОЛЬЗОВАТЬ ДАННЫЙ КОД БЕЗ ИЗМЕНЕНИЙ — КОРЗИНА ОЧИЩАЕТСЯ ВО ВРЕМЯ ОПЛАТЫ — И ОПЛАТА НЕ ПРОИЗОЙДЕТ!

Добавить Комментарий

Ваш ответ

Размещая свой ответ, вы соглашаетесь с правилами сайта.