2014-07-21 11 views
5

मेरे पास वर्डप्रेस के लिए Woocommerce के बारे में 2 प्रश्न हैं।Woocommerce - देश के आधार पर उत्पाद मूल्य

मैं ऐसी साइट पर काम कर रहा हूं जो वक्ताओं को डेनिश बाजार में बेचता है।

प्रश्न एक:

मैं एक आगंतुक के आईपी का पता लगाने और पता लगाने के जो देश व्यक्ति से है सकते हैं? मुझे लगता है कि यह कुछ क्लाइंटलोकेशन एपीआई के साथ किया जा सकता है।

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

प्रश्न 2:

का कहना है कि प्रश्न एक सफल बनाया गया था करने देता है। फिर मैं डेनमार्क की तुलना में अन्य अनुबंधों के लिए अलग-अलग कीमतें दिखाना चाहता हूं। तो यदि आप एक देश से साइट पर जा रहे हैं, तो कीमत XXX है और दूसरे देश से कीमत XXXX है।
मान लीजिए:

In USA the price is = $500 
And in UK the price = £400 

(इस मुद्रा के साथ कोई संबंध नहीं है बाजार मूल्य अलग अलग देशों में सिर्फ अलग है।।)

मैं इस प्लगइन देखा है: http://wordpress.org/plugins/woocomerce-price-by-country/ यह मेरे लिए अनुमति दी प्रत्येक उत्पाद के लिए अलग-अलग कीमतें लिखें, लेकिन जब मैं इसे http://geopeeker.com/ के साथ जांचता हूं तो मैंने बिल्कुल काम नहीं किया था।

क्या आप मुझे कुछ पॉइंट्स या कुछ प्लगइन के कुछ लिंक दे सकते हैं जिन्हें आप जानते हैं?

अद्यतन

मैं सवाल 1. हल करने के लिए मैं कह रहा IP location XML API साथ एक कुकी में आगंतुकों देश की दुकान और फिर मैं सिर्फ एक अगर बयान बना सकते हैं, प्रबंधित है कि अगर देश डेनमार्क के बराबर है, तो नहीं था कार्ट, कार्ट इत्यादि में जोड़ा जाना चाहिए।

तो, हाँ, मैं वास्तव में इसकी सराहना करता है, तो anyknow मुझे कैसे मैं सवाल 2.

हल कर सकते हैं मैं करने के लिए प्रत्येक उत्पाद की कीमत निर्दिष्ट करने के लिए देश पता लगाने में सक्षम है, लेकिन नहीं पा रहा हूँ पर एक विचार दे सकता है दिया गया देश

2'nd अद्यतन:

बस किसी भी रुचि पाठकों यह बताने के लिए, मैं this plugin. जो पूरी तरह से काम कर रहा है खरीदा या!

+1

कृपया जवाब –

उत्तर

4

अपने प्रश्न के 2 भाग के लिए: यदि आप केवल सरल उत्पाद प्रकार उपयोग कर रहे हैं (विविधताओं के बिना) तो आप उत्पाद डेटा पृष्ठ पर कस्टम कीमत फ़ील्ड जोड़ने और woocommerce_get_price_html का उपयोग कर मूल्य फ़िल्टर कर सकते हैं।

add_filter('woocommerce_get_price_html','so24863612_custom_price'); 
function so24863612_custom_price(){ 
    global $post; 
    $_postID = $post->ID; 
    $product = get_product($_postID); 
    $UK_price = get_post_meta($_postID, '_UK_price', true); //loads custom meta data 
    $return_price = $product->get_regular_price(); //default to regular price 
    if (!empty($UK_price)) { 
     $return_price = $UK_price; 
    } 
    return $return_price; 
} 

आप बना सकते हैं और इस तरह से उत्पाद पृष्ठ पर कस्टम फ़ील्ड बचा सकते हैं:

//Display custom fields on product data page in admin 
add_action('woocommerce_product_options_general_product_data', 'so24963039_display_custom_general_tab_fields'); 
function so24963039_display_custom_general_tab_fields() { 
    global $woocommerce, $post; 
    $UK_price = get_post_meta($post->ID, '_UK_price', true); 

    woocommerce_wp_text_input(
     array(
     'id' => '_UK_price', 
     'label' => __('UK Price (£)', 'woocommerce'), 
     'value' => $UK_price, 
     'desc_tip' => 'false' 
     ) 
    ); 
} 

//Save custom fields to access via get_post_meta 
add_action('woocommerce_process_product_meta', 'so24963039_save_custom_general_tab_fields'); 
function so24963039_save_custom_general_tab_fields ($post_id) { 

    $woocommerce_UK_price = $_POST['_UK_price']; 
    if(!empty($woocommerce_UK_price)) 
    update_post_meta($post_id, '_UK_price', esc_attr($woocommerce_UK_price)); 

} 

----------------- Variations- के साथ उत्पादों के लिए ---------------------------

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

add_action('woocommerce_product_after_variable_attributes', 'so24963039_variable_fields', 10, 2); //Display Fields 
function so24963039_variable_fields($loop, $variation_data) { 

echo '<tr><td>'; 
woocommerce_wp_text_input(
    array(
     'id' => '_variant_UK_price['.$loop.']', 
     'label' => __('UK Price (£)', 'woocommerce'), 
     'desc_tip' => 'false', 
     'value' => $variation_data['_variant_UK_price'][0] 
    ) 
); 
echo '</td></tr>'; 
} 

हम भी उन्हें गतिशील रूप से जोड़ने के लिए जब भी उपयोगकर्ता संपादित करें उत्पाद पृष्ठ पर नए संस्करण कहते हैं की जरूरत है::

पहले हम मौजूदा उत्पादों की भिन्नता टैब पर प्रत्येक संस्करण के लिए नए क्षेत्रों को जोड़ना चाहते हैं

add_action('woocommerce_product_after_variable_attributes_js', 'so24963039_variable_fields_js'); //JS to add fields for dynamically added new variations 
function so24963039_variable_fields_js(){ //add fields to new variations that get added 
echo '<tr><td>'; 
woocommerce_wp_text_input(
    array(
     'id' => '_variant_UK_price[ + loop + ]', 
     'label' => __('UK Price (£)', 'woocommerce'), 
     'desc_tip' => 'false', 
     'value' => $variation_data['_variant_UK_price'][0] 
    ) 
); 
echo '</td></tr>'; 
} 

फिर हम भिन्नता मेटा डेटा में कस्टम फ़ील्ड में परिवर्तन सहेजने:

add_action('woocommerce_process_product_meta_variable', 'so24963039_save_variable_fields', 10, 1); //Save variation fields 
function so24963039_save_variable_fields($post_id) { 
if (isset($_POST['variable_sku'])) { 
    $variable_sku = $_POST['variable_sku']; 
    $variable_post_id = $_POST['variable_post_id']; 

    // Variant Tier 1 Price 
    $_variant_UK_price = $_POST['_variant_UK_price']; 
    for ($i = 0; $i < sizeof($variable_sku); $i++) { 
     $variation_id = (int) $variable_post_id[$i]; 
     if (isset($_variant_UK_price[$i])) { 
     update_post_meta($variation_id, '_variant_UK_price', stripslashes($_variant_UK_price[$i])); 
     } 
    } 
} 
} 

अब हम हमारे कस्टम भिन्नता मेटा डेटा है, हम इसे कस्टम कीमत मॉड्यूल में तो जैसे पहुँच सकते हैं:

add_filter('woocommerce_get_price_html','so24863612_custom_price'); 
function so24863612_custom_price(){ 
    global $post; 
    $_postID = $post->ID; 
    $product = get_product($_postID); 
    $product_type = $product->product_type; 

    $UK_price = get_post_meta($_postID, '_UK_price', true); //covers simple products 
    if($product_type == 'variation'){ //override with variant prices 
      $UK_price = get_post_meta($_postID, '_variant_$UK_price', true); 
    } 

    $return_price = $product->get_regular_price(); //default to regular price 
    if (!empty($UK_price)) { 
     $return_price = $UK_price; 
    } 
    return $return_price; 
} 

अब, मुझे विश्वास है कि हिस्सा मिनी गाड़ी प्रदर्शन के लिए छोड़कर काम कर सब कुछ होना चाहिए। किसी कारण से ऐसा लगता है कि मैं मिनी कार्ट में ठीक से प्रदर्शित करने के लिए मजबूर करने के लिए विविधता मेटा डेटा तक पहुंच कैसे प्राप्त कर सकता हूं - जैसे मुझे पता चला कि मिनी-कार्ट डिस्प्ले जेनरेट किया जा रहा था लेकिन मुझे परेशानी हो रही थी कस्टम वैरिएबल तक पहुंचने के लिए सही संदर्भ पथ प्राप्त करना, इसलिए मैंने इसे टेम्पलेट-टैग.एचपी में करने के लिए समाप्त कर दिया और कस्टम मूल्यों की एक सरणी को मेरे कस्टम मूल्य फ़ंक्शन में वैकल्पिक पैरामीटर पर पास कर दिया। हमें चीजों को कैसे करना चाहिए, इस बारे में बहुत गलत लगता है, लेकिन यह काम पूरा हो जाता है। मैं समस्या के इस हिस्से के 'सही' समाधान सुनने के लिए बहुत खुले हैं।

टेम्पलेट tags.php में:

<div class="small-7 large-7 columns"><?php 
              $product_title = $_product->get_title(); 
              echo '<a class="cart_list_product_title" href="'.get_permalink($cart_item['product_id']).'">' . apply_filters('woocommerce_cart_widget_product_title', $product_title, $_product) . '</a>'; 
              echo '<div class="cart_list_product_price">'; 
              //original line: echo woocommerce_price($_product->get_price()); 

              /*Custom Price Override Block*/ 
              $_productID = $_product->id; 
              $product_type = $_product->product_type; 
              if($product_type == 'variation') { 
               $custom_field_data = $_product->product_custom_fields; 
               $regular_price = $custom_field_data['_regular_price']; 
               $custom_UK_price = $custom_field_data['_variant_UK_price']; 
               $custom_variant_prices = [$regular_price[0], $custom_UK_price[0]]; 
               echo so24863612_get_custom_price($_productID, $custom_variant_prices); 
              } else { 
               echo so24863612_get_custom_price($_productID); 
              } 
              /*End Custom Price Override Block*/ 

              echo ' /</div>'; 
              echo '<div class="cart_list_product_quantity">'.__('Quantity', 'woocommerce').': '.$cart_item['quantity'].'</div>'; 

             ?></div> 
+0

हाय की जाँच करें। आपके उत्तर के लिए धन्यवाद।और मुझे देर से जवाब के लिए खेद है। दुर्भाग्यवश मेरे पास उत्पाद विविधताएं हैं, न कि केवल साधारण उत्पाद। – Adnaves

+0

मुझे डर था कि आप यह कहने जा रहे थे। मेरे ग्राहक को एक ही चीज़ की आवश्यकता थी और मैं इसके साथ एक हफ्ते तक संघर्ष कर रहा था। मुझे यह काम मिल गया, लेकिन जब यह मिनी-कार्ट डिस्प्ले की बात आती है तो यह थोड़ा हैकी है। (मुझे इसे एक हुक के साथ ठीक करने के बजाय टेम्पलेट फ़ाइल को संपादित करना पड़ा क्योंकि मुझे पता नहीं था कि मेरी प्लगइन के भीतर से वैरिएंट मेटा डेटा तक पहुंच कैसे प्राप्त करें) मुझे बताएं कि क्या आपको बेहतर पता लगाना है ऐसा करने का तरीका! – FascistDonut

+1

धन्यवाद। वह मुझे दूर मिला है! लेकिन मैं अभी भी फिनिशलाइन पार नहीं किया है। लेकिन मैंने आपका जवाब स्वीकार कर लिया है। पूरी सहायताके लिए शुक्रिया। अगर मुझे एक अनुकूलित तरीका मिल जाए तो मैं आपको बता दूंगा। – Adnaves

1

मैं आपके अपडेट को देखता हूं जिसे आपने विज़िटर का देश प्राप्त करने के लिए प्रबंधित किया था और आप कार्ट को हटाने के लिए अगर कथन बनाने के लिए इसका उपयोग कर सकते हैं। (जिस तरह से ठंडा हो रहा है)

क्या यह आपके प्रश्न 2 का उत्तर नहीं देता है, प्रत्येक आगंतुक के लिए कीमतों को बदलने के बारे में? आपको बस इतना करना है कि दोनों कीमतें कहीं भी संग्रहीत की जाती हैं, और फिर यह डेनमार्क या यूके को प्रतिबिंबित करती है।कस्टम फ़ील्ड

आप इस मुद्रा रूपांतरण नहीं है उल्लेख किया - -

कीमतें विशिष्ट हैं ताकि आप दोनों मान संग्रहीत की जरूरत है। उस उत्पाद प्रविष्टि में एक कस्टम फ़ील्ड जोड़ें जिसे आप उस नई कीमत के साथ संपादित करते हैं, और इसे "denmarkprice" या कुछ

मैं WooCommerce के साथ पर्याप्त 100% परिचित नहीं हूं यह कहने के लिए कि कौन सा कस्टम फ़ील्ड प्लगइन काम कर सकता है, लेकिन आप कर सकते हैं http://www.advancedcustomfields.com/ का उपयोग करें यदि आप केवल कस्टम फ़ील्ड स्वयं नहीं बनाना चाहते हैं और वैरिएबल को the_meta() के साथ कॉल करते हैं, जब आप इसे अपने अन्य कथन के अंदर प्रदर्शित करना चाहते हैं।

http://codex.wordpress.org/Custom_Fields

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