2016-12-20 16 views
0

J'essaie de définir les noms de valeur d'attribut d'un attribut de produit comme nom de classe pour chaque élément <span>.Woocommerce ajouter des noms de valeur d'attribut en tant que classe

Je peux par exemple définir material comme attribut de produit. Et puis fixer des valeurs comme stone, paper etc.

Comment puis-je mettre stone et paper comme classname? Normalement, les valeurs sont imprimées comme ->Material: stone, paper. Je veux définir un nom de classe pour que je puisse changer la pierre et le papier en une petite image.

Ainsi, dans woocommerce/single-product/add-to-cart/simple.php J'ai ajouté ceci:

<?php 
if ($attribute['is_taxonomy']) { 
    $values = wc_get_product_terms($product->id, $attribute['name'], array('fields' => 'names'));   

    ///////////////this is added////////////////////////// 
    if($attribute['name'] == 'pa_material'){ // I only want to set a classname if attribute name == material    

    foreach($values as $value){ 
     $value_classname = $value; // how can I get the value name?? 
    }      
    echo apply_filters('woocommerce_attribute', wpautop(wptexturize('<span class="lbl ' . $value_classname . '">'. implode('</span><span class="lbl ' . $value . '">', $values).'</span>')), $attribute, $values); 
    //////////////////////////////////////////// 
    } else{ 
     echo apply_filters('woocommerce_attribute', wpautop(wptexturize(implode(', ', $values))), $attribute, $values); 

    } 

} else { 

// Convert pipes to commas and display values 
    $values = array_map('trim', explode(WC_DELIMITER, $attribute['value'])); 
echo apply_filters('woocommerce_attribute', wpautop(wptexturize(implode(', ', $values))), $attribute, $values); 

} 
?> 

En ce moment, le classname retourne évidemment vide.

Répondre

1

Pour obtenir les valeurs d'attribut attribuées au produit pour seulement l'attribut matériel:

global $product; 
//this will get the names 
$values = wc_get_product_terms($product->id, 'pa_material', array('fields' => 'names'));