2017-08-16 74 views
1

我試圖讓定製產品頁面上的可變產品的變化。我有兩個屬性,一個是大小作爲選擇,另一個顏色色板。我不能顯示我需要顯示,當我使用下面的代碼返回尺寸或顏色的文本名稱不是大小或顏色色板選擇下拉屬性的問題。任何幫助嗎?!獲取Woocommerce變化屬性

echo implode(', ', wc_get_product_terms($product_id, 'pa_colors')); 

回答

2

這是一個簡短的代碼來解決你的問題,我讓你整個代碼,你只能使用你需要的。

首先檢查get_product函數是否存在,並檢查產品類型,以創建一個帶有id的正確產品對象(在我的情況下爲$idProduct)。

它woocommerce 3.x的工作,我沒有測試它woocommerce < 3.x的

if(function_exists('get_product')) { 
     $product = get_product($idProduct); 
     if ($product->is_type('variable')) { 

      $product = new WC_Product_Variable($idProduct); 

      $available_variations = $product->get_available_variations(); //get all child variations 
      $variation_variations = $product- >get_variation_attributes(); // get all attributes by variations 

      // taxonomy   => terms 
      // pa_attribute-color => array('blue', 'red', green) 
      // Use ex: get_taxonomy('pa_attribute-color')->labels; to get the Name and not the slug to attributes, it can be the taxonomy 
      // Use ex: get_term_by('name', 'pa_attribute-color', 'pa_attribute-color); to get the Name/label 

      $result = array($available_variations , $attributes); // only to see the result you can use var_dump, error_log, etc. 
      //... 
      //... 
     }elseif ($product->is_type('bundle') && class_exists('WC_Product_Bundle')) { 
      $product = new WC_Product_Bundle($idProduct); 
     }else{ 
      $product = new WC_Product($idProduct); 
     } 
    } 

你也嘗試:

$product->get_attribute($key); 
wc_attribute_label($key); 

其中$key可以pa_colorpa_size

我希望幫你。