2015-07-13 4 views
0

У меня есть только один продукт для отображения, но я предлагаю два варианта: план оплаты (обработанный через плагин подписки) и единый платеж. Я их показываю на моем сайте как сгруппированный, и оба варианта имеют кнопку «Добавить в корзину». Я не хочу, чтобы любой вариант был в тележке одновременно с другим. То, что я хотел бы сделать, либо:WooCommerce проверить содержимое корзины на складе

A) Опорожните корзину перед каждым кликом, добавленным в корзину.

или

B) Проверьте, если тележка содержит продукт уже (через ProductID), и удалите план оплаты при выборе полной заработной платы, или наоборот. Вот что я придумал для этого варианта, но я немного потерян, и он работает неправильно.

 global $woocommerce; 
     if ($product_id = 66){ 
      foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item) { 
       echo $cart_item_key; 
       if($cart_item['product_id'] == '69'){ 
        //remove single product 
        $woocommerce->cart->remove_cart_item($cart_item_key); 
       } 
      } 
     } 
     elseif ($product_id = 69){ 
      foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item) { 
       echo $cart_item_key; 
       if($cart_item['product_id'] == '66'){ 
        //remove single product 
        $woocommerce->cart->remove_cart_item($cart_item_key); 
       } 
      } 
     } 

Я собираюсь добавить это к методу add_to_cart перед попыткой/catch, чтобы выбросить любые ошибки. Может ли кто-нибудь помочь мне составить лучшее решение?

ответ

0

Опорожнение телегу было бы очень легко

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

function so_31392001_empty_cart($valid, $product_id, $quantity) { 

    WC()->cart->empty_cart(); 

    return $valid; 
} 
Смежные вопросы