2017-08-16 5 views
1

Ich versuche, Variationen eines variablen Produkts auf benutzerdefinierten Produktseite zu erhalten. Ich habe zwei Attribute, eines für Größen als Auswahl und das andere für Farben als Farbfelder. Das Problem, dass ich das anzuzeigende Attribut nicht anzeigen kann, und wenn ich den folgenden Code verwende, gibt es einen Textnamen von Größen oder Farben zurück, nicht das Auswahl-Dropdown für Größen oder Farbfelder. Irgendwelche Hilfe bitte?Erhalten Woocommerce Variation Attribute

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

Antwort

2

Dies ist ein kurzer Code, um Ihre Frage zu lösen, lasse ich Sie gesamten Code, können Sie nur verwenden, die Sie benötigen.

Die erste ist zu überprüfen, ob get_product Funktion existiert, und überprüfen Sie den Produkttyp, um ein korrektes Produktobjekt mit der ID (in meinem Fall $idProduct) zu erstellen.

Es funktioniert auf woocommerce 3.x, ich teste es nicht auf 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); 
     } 
    } 

Auch versuchen Sie mit:

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

wo $keypa_color sein kann, pa_size, etc

ich Ihnen helfen hoffen.

Verwandte Themen