2014-11-23 9 views
6

मुझे उत्पाद विविधताओं और Woocommerce में उनके गुणों के साथ एक बड़ी समस्या का सामना करना पड़ रहा है। मैं प्रत्येक availabe उत्पाद विविधता के लिए प्रत्येक विशेषता के साथ एक टेबल प्रदर्शित करने की कोशिश कर रहा हूँ। लेकिन Woocommerce लोअरकेस में पोस्ट मेटा में गुणों को बचाता है, स्लैश और जर्मन विशेष पात्रों जैसे ü, ö, ä आदि को प्रतिस्थापित करता है। मुझे $ विविधता-> get_variation_attributes() के साथ विशेषताएँ मिलती हैं। मैं के लिए मूल्यों को बचाने आप व्यवस्थापक पैनल में ड्रॉपडाउन में उदाहरण के लिए देख सकते हैं डेटाबेस की खोज की है, लेकिन वे वे करने के लिए आवंटित कर रहे हैं बदलाव के लिए एक लिंक के बिना इस तरह सहेजे जाते हैं:उत्पाद विविधताओं के लिए विशेषता मान

a:5:{s:10:"bestell-nr";a:6:{s:4:"name";s:11:"Bestell-Nr.";s:5:"value";s:9:"1 | 2 | and so on... 

मैं कैसे कर सकता है प्रदर्शित करने के लिए उनके सही प्रारूप में गुण प्राप्त करें?

आपकी मदद के लिए धन्यवाद!

उत्तर

10

असल में उत्पाद विशेषताओं वास्तव में कस्टम टैक्सोनोमीज़ में हैं, इसलिए आपको उस विशेष वर्गीकरण में शर्तों को प्राप्त करने की आवश्यकता है। सभी विशेषता टैक्सोनोमी 'pa_' से पहले हैं। तो एक आकार विशेषता 'pa_size' वर्गीकरण होगी। और भिन्नता आईडी एक भिन्नता के लिए पोस्ट आईडी है।

लेकिन आप इसे कैसे प्रदर्शित करना चाहते हैं पर निर्भर करता है, WooCommerce सभी विभिन्नता के गुणों प्रदर्शित करने के लिए निर्मित एक समारोह है:

निम्नलिखित एक बदलावों को भी की एक परिभाषा सूची प्रदर्शित करेगा जिम्मेदार बताते हैं।

echo wc_get_formatted_variation($product->get_variation_attributes()); 

और true का एक दूसरा पैरामीटर गुजर एक फ्लैट सूची प्रदर्शित करेगा:

echo wc_get_formatted_variation($product->get_variation_attributes(), true); 
+0

आपके उत्तर के लिए धन्यवाद, मैंने शर्तों को प्राप्त करने के साथ गुण प्राप्त करने का प्रयास किया, लेकिन मुझे जिस समस्या का सामना करना पड़ रहा है वह यह है कि वे गलत हैं। यह सभी लोअरकेस है और विशेष पात्रों को प्रतिस्थापित किया गया है। – user3357332

+0

यदि आप वर्गीकरण की आईडी जानते हैं तो आप [get_the_terms() '] (http://codex.wordpress.org/Function_Reference/get_the_terms) भी इस तरह से कर सकते हैं। क्या आप अपना प्रश्न संपादित कर सकते हैं कि आपको किस प्रारूप में उनकी आवश्यकता है/क्यों 'wc_get_formatted_variation()' आपके लिए काम नहीं करेगा? – helgatheviking

+0

स्निपेट @helgatheviking के लिए धन्यवाद, मुझे wc_get_formatted_variation() func ' – Dan

1

तरह से मैं यह "get_post_meta" का उपयोग करना है कार्य करें:

echo get_post_meta($variation_id, 'attribute_name_field', true); 

होप्स इस कोई मदद करता है ।

+0

दुर्भाग्य से कम-संस्करण-संस्करण देता है। – piersb

3

मैं केवल उन सभी के बजाय भिन्नता विशेषताओं में से एक प्रकाशित करना चाहता था; इस कोड का योगदान किसी भी अन्य के लिए उपयोगी है।

get_variation_attributes() सभी विशेषताओं सरणी यह ​​सौंप दिया है

$attributes = $productVariation->get_variation_attributes() ; 
if ($attributes [ 'attribute_pa_colour' ]) { 
    $colour = [ 'attribute_pa_colour' => $attributes [ 'attribute_pa_colour'] ]; 
    echo wc_get_formatted_variation ($colour); 
} 
0

मैं wp_get_post_terms इस्तेमाल किया सही विचरण का श्रेय प्राप्त करने के एक फ़ॉर्मेट संस्करण रिटर्न हो जाता है

wc_get_formatted_variation()।

global $product; 
    $variations = $product->get_available_variations(); 
    $var = []; 
    foreach ($variations as $variation) { 
     $var[] = $variation['attributes']; 
    } 
    var_dump($var); 
    //xxx to get attribute values with correct lower-upper-mixed-case 
    foreach ($var as $key => $arr) { 
     foreach ($arr as $orig_code => $lowercase_value) { 
     $terms_arr = wp_get_post_terms($product->id, str_replace('attribute_','',$orig_code), array('fields' => 'names')); 
     foreach ($terms_arr as $term) { 
      if (strtolower($term) == $lowercase_value) { 
       $var[$key][$orig_code] = $term; 
       break; 
      } 
     } 
     } 
    } 
    var_dump($var); 

परिणाम:

कठिन से पहले कोड

array (size=1) 
    0 => 
    array (size=2) 
     'attribute_pa_width' => string 'none' (length=4) 
     'attribute_pa_code' => string 'valancese' (length=9) 

कठिन कोड के बाद:

array (size=1) 
    0 => 
    array (size=2) 
     'attribute_pa_width' => string 'None' (length=4) 
     'attribute_pa_code' => string 'ValanceSe' (length=9) 
3

यह मेरे लिए काम करने लगता है। उम्मीद है की यह मदद करेगा।

$post = get_post(); 
$id = $post->ID; 
$product_variations = new WC_Product_Variable($id); 
$product_variations = $product_variations->get_available_variations(); 
print_r($product_variations); 

यह कक्षा-wc-product-variable में पाया जा सकता है।PHP

तो मूल रूप से यदि आप उस पृष्ठ पर चारों ओर देखते हैं तो आप उपयोगी कार्यों का एक गुच्छा पा सकते हैं।

यहां कुछ ऐसा है जो मैंने एक साथ रखा है।

$product_children = $product_variations->get_children(); 

$child_variations = array(); 

foreach ($product_children as $child){ 

$child_variations[] = $product_variations->get_available_variation($child); 

} 

print_r($child_variations); 
संबंधित मुद्दे