2016-06-27 10 views
5

साथ गाड़ी कीमत ओवरराइड हम साथ उत्पादों का एक समूह है या तो:WooCommerce: पाठ

  • कोई कीमत
  • शून्य कीमत

हम उन्हें में निर्मित हुक लेकिन साथ खरीद-बनाया गाड़ी अभी भी चेकआउट के दौरान उन्हें 0 price के रूप में प्रदर्शित करती है।

हम कार्ट & चेकआउट सारांश "विशेष आदेश" या किसी अन्य पाठ को प्रदर्शित करने के लिए चाहते हैं, लेकिन ऐसा लगता है कि WooCommerce टेक्स्ट-आधारित कीमतों को अमान्य करता है।

इस कोशिश की: WooCommerce: Add product to cart with price override?

ऊपर एक नंबर ओवरराइड के साथ ठीक काम करता है, लेकिन जब एक पाठ के साथ की कोशिश की यह चूक वापस ओवरराइड एक 0 price प्रदर्शित करने के लिए।

क्यों? ये उत्पाद अंतर्निहित हैं और दुकान व्यवस्थापक ग्राहक/आपूर्तिकर्ता से बात करने के बाद कीमत अपडेट करेंगे।

उत्तर

4

आपको तारों को फ़िल्टर करने और कार्ट में उप-योग प्रदर्शित करने की आवश्यकता है। आपके द्वारा उल्लिखित लिंक ने वास्तविक मूल्य को बदलने पर चर्चा की। आपके मामले में कीमत $ 0 है जब तक कि आप बाद में वास्तविक मूल्य निर्धारित न करें। के लिए गाड़ी भी योग शायद फिल्टर कर रहे हैं, लेकिन यह एक शुरुआत होनी चाहिए:

add_filter('woocommerce_cart_item_price', 'so_38057349_cart_item_price', 10, 3); 
function so_38057349_cart_item_price($price, $cart_item, $cart_item_key) { 

    if ($cart_item[ 'data' ]->price == 0) { 
     $price = __('Special Order', 'yourtheme'); 
    } 

    return $price; 
} 


add_filter('woocommerce_cart_item_subtotal', 'so_38057349_cart_item_subtotal', 10, 3); 
function so_38057349_cart_item_subtotal($subtotal, $cart_item, $cart_item_key) { 

    if ($cart_item[ 'data' ]->price == 0) { 
     $subtotal = __('To be determined', 'yourtheme'); 
    } 

    return $subtotal; 
} 


add_filter('woocommerce_order_formatted_line_subtotal', 'so_38057349_order_item_subtotal', 10, 3); 
function so_38057349_order_item_subtotal($subtotal, $item, $order) { 

    if (isset($item[ 'line_subtotal' ]) && $item[ 'line_subtotal' ] == 0) { 
     $subtotal = __('To be determined', 'yourtheme'); 
    } 

    return $subtotal; 
} 
बेशक

, यह भी एक 0 मूल्य के साथ किसी भी उत्पाद के लिए लागू होगी और हो सकता है न केवल लोगों को आप कस्टम बनाने के लिए कॉन्फ़िगर है बनाया गया है, इसलिए आपको यहां आपूर्ति की तुलना में अधिक सशर्त तर्क की आवश्यकता हो सकती है।

अपनी टिप्पणी पर फ़ॉलो करने के लिए .... woocommerce_order_amount_total संख्यात्मक कुल है और प्रदर्शित एचटीएमएल नहीं है। आप cart-totals.php टेम्पलेट में कॉल किए जा रहे कार्यों को देख सकते हैं।

function so_38057349_woocommerce_cart_subtotal($cart_subtotal, $compound, $cart) { 
    if($cart->subtotal == 0){ 
     $cart_subtotal = __('Order subtotal to be determined', 'yourtheme'); 
    } 
    return $cart_subtotal; 
}; 
add_filter('woocommerce_cart_subtotal', 'so_38057349_woocommerce_cart_subtotal', 10, 3); 


// define the woocommerce_order_amount_total callback 
function so_38057349_woocommerce_order_amount_total($order_total) { 
    if(WC()->cart->get_total() == 0){ 
     $order_total = __('Order total to be determined', 'yourtheme'); 
    } 
    return $order_total; 
}; 
add_filter('woocommerce_cart_totals_order_total_html', 'so_38057349_woocommerce_order_amount_total'); 

अपडेट किया गया स्क्रीनशॉट: cart

+0

आपको बहुत धन्यवाद हेल्गा, यह बिल्कुल जरूरी था। कार्ट और चेकआउट पृष्ठों को कवर करने के लिए आपके उदाहरण पर विस्तारित! – radug

+0

मेरा संपादन देखें। आपके प्रश्न में त्रुटि के समान 'woocommerce_order_amount_total' एक HTML स्ट्रिंग नहीं है। – helgatheviking

1

हेल्गा के जवाब पर विस्तार, यहाँ पूर्ण कोड है कि कीमतों के गाड़ी पृष्ठों, चेकआउट पृष्ठों और आदेश की पुष्टि ईमेल पर भी 'निर्धारित किया जाना' बदल जाता है। पाठ अलग रखा गया ताकि लोगों को पता चल सके कि प्रत्येक फ़िल्टर कहां जाता है।

add_filter('woocommerce_cart_item_price', 'filter_cart_item_price', 10, 3); 
function filter_cart_item_price($price, $cart_item, $cart_item_key) { 
    if ($cart_item[ 'data' ]->price == 0) { 
     $price = __('Special Order', 'yourtheme'); 
    } 
    return $price; 
} 

add_filter('woocommerce_cart_item_subtotal', 'filter_cart_item_subtotal', 10, 3); 
function filter_cart_item_subtotal($subtotal, $cart_item, $cart_item_key) { 
    if ($cart_item[ 'data' ]->price == 0) { 
     $subtotal = __('To be determined', 'yourtheme'); 
    } 
    return $subtotal; 
} 

add_filter('woocommerce_cart_subtotal', 'filter_woocommerce_cart_subtotal', 10, 3); 
function filter_woocommerce_cart_subtotal($cart_subtotal, $compound, $instance) { 
    $cart_subtotal = __('To be determined 4', 'yourtheme'); 
    return $cart_subtotal; 
}; 


add_filter('woocommerce_order_formatted_line_subtotal', 'filter_order_item_subtotal', 10, 3); 
function filter_order_item_subtotal($subtotal, $item, $order) { 
    if (isset($item[ 'line_subtotal' ]) && $item[ 'line_subtotal' ] == 0) { 
     $subtotal = __('To be determined 2', 'yourtheme'); 
    } 
    return $subtotal; 
} 

add_filter('woocommerce_order_subtotal_to_display', 'filter_woocommerce_order_subtotal_to_display', 10, 3); 
function filter_woocommerce_order_subtotal_to_display($subtotal, $compound, $instance) { 
     $subtotal = __('To be determined 6', 'yourtheme'); 
    return $subtotal; 
}; 

add_filter('woocommerce_get_formatted_order_total', 'filter_woocommerce_get_formatted_order_total', 10, 2); 
function filter_woocommerce_get_formatted_order_total($formatted_total, $instance) { 
     $formatted_total = __('To be determined 8', 'yourtheme'); 
    return $formatted_total; 
};