2012-09-08 16 views
29
$replace_order = new WC_Cart(); 
$replace_order->empty_cart(true); 
$replace_order->add_to_cart("256", "1"); 

उपर्युक्त कोड 256 कार्ट 1 समय में उत्पाद जोड़ें। लेकिन मेरे पास यह मुद्दा यह है कि मैं उत्पाद की कीमत को पूरी तरह से ओवरराइड करने में सक्षम होना चाहता हूं ... जहां तक ​​मैं कह सकता हूं, केवल एक चीज जो मैं कर सकता हूं वह कार्ट में कूपन लागू करती है।WooCommerce: कीमत ओवरराइड के साथ कार्ट में उत्पाद जोड़ें?

क्या कीमत पूरी तरह से कुछ कस्टम करने के लिए पूरी तरह से ओवरराइड करने का कोई तरीका है?

+0

चेक इस लिंक बहुत उपयोगी HTTPS का उपयोग करें:: //www.cloudways उदाहरण नीचे के रूप में दिया जाता है .com/ब्लॉग/परिवर्तन-woocommerce-price-display/ – Sourabh

उत्तर

46

यहाँ गाड़ी

add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 

function add_custom_price($cart_object) { 
    $custom_price = 10; // This will be your custome price 
    foreach ($cart_object->cart_contents as $key => $value) { 
     $value['data']->price = $custom_price; 
     // for WooCommerce version 3+ use: 
     // $value['data']->set_price($custom_price); 
    } 
} 

आशा है कि यह उपयोगी होगा में उत्पाद की कीमत ओवरराइड करने के लिए कोड ...

+0

बहुत बहुत धन्यवाद! क्या आपके पास WooCommerce के साथ काफी अनुभव है? – dcolumbus

+5

यह कार्ट को अद्यतन करता है। लेकिन अभी भी शीर्ष पर त्वरित कार्ट आइकन में यह वास्तविक उत्पाद मूल्य प्रदर्शित करता है। कोई हुक? –

+1

इसे टक्कर देने के लिए खेद है .... उपरोक्त काम विविधता के साथ करता है? – danyo

41

आप उत्पाद आईडी की जाँच, उपरोक्त कोड में करने के लिए एक if बयान पेश करने की जरूरत है:

add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 

function add_custom_price($cart_object) { 
    $custom_price = 10; // This will be your custome price 
    $target_product_id = 598; 
    foreach ($cart_object->cart_contents as $value) { 
     if ($value['product_id'] == $target_product_id) { 
      $value['data']->price = $custom_price; 
     } 
     /* 
     // If your target product is a variation 
     if ($value['variation_id'] == $target_product_id) { 
      $value['data']->price = $custom_price; 
     } 
     */ 
    } 
} 

यह कोड कहीं भी जोड़ें और यह सुनिश्चित करें कि यह कोड हमेशा निष्पादन योग्य है।

यह कोड जोड़ने, जब आप फोन करता हूँ के बाद:

global $woocommerce; 
$woocommerce->cart->add_to_cart(598); 

केवल इस उत्पाद ओवरराइड मूल्य के साथ जोड़ दिया जाएगा, अन्य उत्पादों कार्ट में जोड़ कीमतों अधिभावी के लिए नजरअंदाज कर दिया जाएगा।

आशा है कि यह सहायक होगा।

+1

का उपयोग करके सेट किया गया है, मैं उपयोगकर्ता इनपुट के आधार पर कस्टम मूल्य कैसे निर्धारित कर सकता हूं? यह कस्टम कीमत हार्ड कोडित है। कोई सुझाव? फ़ंक्शन add_custom_price ($ cart_object, $ custom_price) की तरह कुछ – shish

+1

मैं उस उत्पाद के लक्ष्य उत्पाद आईडी को गतिशील रूप से कैसे प्राप्त कर सकता हूं जिसमें कार्ट बटन में जोड़ा गया है? –

+2

ऐसा लगता है कि इन दो उत्तरों को संयुक्त किया जाना चाहिए। – Kirby

1

इसे गतिशील बनाने के लिए (अलग-अलग कार्ट में प्रत्येक आइटम के लिए ओवरराइड मूल्य), आपको woocommerce_add_to_cart हुक का उपयोग करके सत्र कुंजी के रूप में कार्ट आइटम कुंजी के साथ सत्र में ओवरराइड उत्पाद मूल्य को सहेजने की आवश्यकता है।

इन सत्र मानों का उपयोग कर आप सही कार्ट कुल गणना और उन्हें परिवर्तित मूल्य बना सकते हैं के साथ-आदेश मद में प्रदर्शित

आप एक उदाहरण के साथ पूर्ण विवरण के लिए निम्नलिखित guide उल्लेख कर सकते हैं।

1

WooCommerce 2.5 के साथ मुझे यह 2-भाग प्रक्रिया होने के लिए मिला। पहला कदम woocommerce_add_cart_item फ़िल्टर के माध्यम से कार्ट में जोड़े जाने पर मूल्य निर्धारण के रन-टाइम डिस्प्ले को बदलना है। दूसरा भाग लगातार सत्र डेटा सेट करना है जो चेकआउट के दौरान woocommerce_get_cart_item_from_session फ़िल्टर के माध्यम से पढ़ा जाता है। यह कुल योग फ़िल्टर (जैसे woocommerce_before_calculate_totals) को हुक करने से तेज़ लगता है क्योंकि वे WooCommerce में बहुत बार चलते हैं।

अधिक यहाँ विवरण: woocommerce change price while add to cart

+0

क्या अतिरिक्त उत्पाद उत्पादों को फिर से चलाने के बजाय कार्ट में प्रत्येक उत्पाद की कस्टम कीमत जोड़ना संभव है? –

0

यह वह जगह है कैसे मैं यह किया है, पहले मैं डायन cart_item_data को गाड़ी आइटम के लिए कस्टम डेटा को बचा सकता है अपने कस्टम मूल्य जोड़ने के लिए, तो मैं woocommerce_before_calculate_totals, पाश गाड़ी का उपयोग करें और पहले से जोड़ने जोड़ा मूल्य

function add_donation_to_cart() { 

    $cart_item_data = array('price' => $_REQUEST['donate_amount']); 
    $woocommerce->cart->add_to_cart(5395, 1, '', array(), $cart_item_data); 
} 


add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 

function add_custom_price($cart) { 
    foreach ($cart->cart_contents as $key => $value) { 
     $value['data']->price = $value['price']; 
    } 
} 
1

Google से यहां आने वाले पूर्ववर्ती के लिए। उपरोक्त अब बहिष्कृत है क्योंकि मुझे WooCommerce 3.0.1 को अपडेट करने का पता चला है।

इसके बजाय यदि आप ऊपर के

अब price

यहाँ के बजाय set_price उपयोग करने की आवश्यकता एक उदाहरण है:

add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 
function add_custom_price($cart_object) { 
    $custom_price = 10; // This will be your custome price 
    foreach ($cart_object->cart_contents as $key => $value) { 
     $value['data']->set_price = $custom_price; 
    } 
} 

मुझे आशा है कि यह भविष्य :)

7

मैं कोशिश की है में लोगों को मदद मिलती उपर्युक्त कोड नमूने और नवीनतम Woocommerce 3.0 उपरोक्त किसी भी उदाहरण का समर्थन नहीं करते हैं। नीचे कोड का प्रयोग करें और मेरे लिए पूरी तरह से काम कर रहे हैं।

add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 

function add_custom_price($cart_object) { 
    $custom_price = 10; // This will be your custom price 
    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) { 
     $cart_item['data']->set_price($custom_price); 
    } 
} 
+0

उपरोक्त मेरा उदाहरण आज़माएं। – danyo

+0

वह विकल्प मेरे लिए काम नहीं किया गया है। –

+0

क्या आपने सही कोड की कोशिश की है? मेरे पास यह 1000 प्रीमियम इंस्टॉल के साथ एक लाइव प्रीमियम प्लगइन में चल रहा है। WooCommerce का कौन सा संस्करण आपने स्थापित किया है? – danyo

6

WooCommerce संस्करण के रिलीज के बाद 3.0.0 उत्पाद की कीमत set_price ($ मूल्य) फ़ंक्शन का उपयोग कार्ट में जोड़ें पर अद्यतन है।

add_action('woocommerce_before_calculate_totals', 'mj_custom_price'); 

function mj_custom_price($cart_object) { 
    $woo_ver = WC()->version; 
    $custom_price = 10; 
    foreach ($cart_object->cart_contents as $key => $value) 
    { 
     if($woo_ver < "3.0.0" && $woo_ver < "2.7.0") 
     { 
      $value['data']->price = $custom_price; 
     } 
     else 
     { 
      $value['data']->set_price($custom_price); 
     } 
    }    
} 

कई धन्यवाद

3

Wordpress और Woocommerce नवीनतम संस्करण के लिए, इस तरह

add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 

function add_custom_price($cart_object) { 
    foreach ($cart_object->cart_contents as $key => $value) { 
     $custom_price = 5; 
     $value['data']->set_price($custom_price); 
    } 
} 
संबंधित मुद्दे