Как в 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');
     

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

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

    Ваш ответ

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