NikMaster777
@NikMaster777

Как удалить товар из корзины woocommerce автоматически?

Подскажите ребята как убирать автоматически товар из корзины в woocommerce? Задача в следующем: На сайте скачиваемый товар продается индивидуально (в одном экземпляре), выставлены настройки чтобы при нажатии на кнопку "Купить" клиент переходил сразу на оформление заказа. Но в этот момент товар добавляется в корзину которая скрыта и если клиент не оформил заказ, а например перешел на другую страницу, то при попытке купить этот товар ещё раз появляется надпись "Вы не можете добавить еще раз "Товар" в корзину". Либо если он выбирает другой товар, то на оплату выводится и ранее выбранный товар так как добавлен в корзину. Вроде правильно описал. Нужно удалять товар из корзины если клиент не стал его покупать и ушел со страницы оформления заказа.
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
NikMaster777
@NikMaster777 Автор вопроса
1) Пустая корзина перед добавлением в корзину (если корзина не пуста) сбросит всю корзину:

add_filter( 'woocommerce_add_to_cart_validation', 'one_cart_item_at_the_time', 10, 3 );
function one_cart_item_at_the_time( $passed, $product_id, $quantity ) {
    if( ! WC()->cart->is_empty())
        WC()->cart->empty_cart();
    return $passed;
}


2) Этот код проверит только добавляемый товар, остальные товары если есть в корзине удалены не будут:

add_filter('woocommerce_add_to_cart_validation', 'one_cart_item_at_the_time', 10, 3);

function one_cart_item_at_the_time( $passed, $product_id, $quantity ) {
    if(! WC()->cart->is_empty()) {
        $cartId = WC()->cart->generate_cart_id($product_id);
        $cartItemKey = WC()->cart->find_product_in_cart($cartId);
        if ($cartItemKey) {
          return $passed;
        } else {
          $woocommerce->cart->add_to_cart( $product_id );
          return $passed;
        }
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы