2015-06-01 6 views
12

एक ऐसा फ़ंक्शन बनाया जहां ग्राहक को एक विशिष्ट राशि तक पहुंचने पर कार्ट में उत्पाद जोड़ा जाता है।

जब ग्राहक स्तर 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

क्या मैं डब्ल्यूसी() -> कार्ट-> remove_cart_item ($ product_3) बदल सकता हूं; उसके लिए ? –

+0

वह परिवर्तनीय $ product_3 क्या है? – WisdmLabs

उत्तर

11

मुझे लगता है कि आप remove_cart_item गलत तरीके से उपयोग कर रहे हैं। यदि आप documentation से गुजरते हैं, तो आप पाएंगे कि यह कार्ट_item_key पैरामीटर के रूप में स्वीकार करता है (जैसा कि टिप्पणी में उल्लिखित wisdmLabs के रूप में)।

तुम इतनी है कि यह प्रयोग कर रहे हैं:

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

बजाय इस प्रयास करें:

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

कि लाइन को अद्यतन करने के बाद, मैं आप उत्पाद को दूर करने में सक्षम हो जाएगा लगता है।

+0

धन्यवाद, इससे मुझे इसे हल करने में मदद मिली। दूसरों के देखने के लिए समाधान के साथ मेरी पोस्ट अपडेट करेगा। –

+1

खुशी यह आपके लिए काम किया। हैप्पी कोडिंग! –

संबंधित मुद्दे