2015-06-01 3 views
12

Создана функция, при которой клиент получает товар, добавленный в корзину, когда достигает определенной суммы.Удалить товар с помощью продукта product_id - Woocommerce

Пример того, когда клиент достигает уровня 3 и получает продукт.

// Bonus products 
$product_1 = '4751'; 
$product_2 = '4752'; 
$product_3 = '4753'; 

// Get cart value in a clean format 
$cart_total = WC()->cart->get_cart_subtotal(); 
$cart_total = html_entity_decode($cart_total, ENT_QUOTES, 'UTF-8'); 
$cart_total_format = strip_tags($cart_total); 
$cart_value = preg_filter("/[^0-9]/", "", $cart_total_format); 
$sum_raw = $cart_value; 

// Set the sum level 
$level3 = '1500'; 

// Check sum and apply product 
if ($sum_raw >= $level3) { 

// Cycle through each product in the cart and check for match 
$found = 'false'; 
foreach (WC()->cart->cart_contents as $item) { 
    global $product; 
    $product_id = $item['variation_id']; 

    if ($product_id == $product_3) { 
     $found = 'true'; 
    } 
} 

// If product found we do nothing 
if ($found == 'true') {} 
// else we will add it 
else { 
    //We add the product 
    WC()->cart->add_to_cart($product_3); 

Если клиент решит удалить так это утверждение элемента верно я хочу, чтобы иметь возможность удалить его снова.

if ($sum_raw < $level3) { 

    // Trying to remove item 
    foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item) { 
     if ($cart_item['variation_id'] == $product_3) { 

      //remove single product 
      WC()->cart->remove_cart_item($product_3); 
     } 
    } 
} 

Не удаляйте продукт из корзины. Какие-нибудь идеи, что я здесь делаю неправильно? Вы искали, не найдя решения, которое работает для меня.

Решение

С помощью @Rohil_PHPBeginner & @WisdmLabs я пришел к этому решению, который сделал работу для меня.

global $woocommerce; 
// Check if sum 
if ($sum_raw < $level3) { 
    foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item) { 

     if ($cart_item['variation_id'] == $product_3) { 
      //remove single product 
      $woocommerce->cart->remove_cart_item($cart_item_key); 
     } 
    } 
} 
+0

WC_Cart :: remove_cart_item ($ cart_item_key); – WisdmLabs

+0

Могу ли я изменить WC() -> cart-> remove_cart_item ($ product_3); для этого ? –

+0

Что это за переменная $ product_3? – WisdmLabs

ответ

11

Я думаю, вы используете remove_cart_item неправильно. Если вы пройдете через documentation, вы обнаружите, что он принимает cart_item_key как параметр (как указано в комментарии wisdmLabs).

Вы используете его так:

WC()->cart->remove_cart_item($product_3); 

Попробуйте вместо этого:

WC()->cart->remove_cart_item($cart_item_key); 

После обновления этой линии, я думаю, что вы будете в состоянии удалить продукт.

+0

Спасибо, Это помогло мне решить эту проблему. Будет обновлять мой пост с помощью решения для других. –

+1

Рад Это сработало для вас. Счастливое кодирование! –

Смежные вопросы