2017-06-21 1 views
1

J'ai déjà ajouté un produit à mon WooCommerce, par programmation avec deux attributs (pa_size, pa_color). Les deux sont utilisés pour les variations. Maintenant, je veux faire un fichier php, qu'il va insérer un attribut de plus dans chaque produit (pa_brand). Cela sera utilisé uniquement pour la visibilité et non pour les variations.Ajouter un attribut de produit WooCommerce sans perdre d'existences

J'ai essayé quelques codes comme:

$term_taxonomy_ids = wp_set_object_terms($productID, $productBrand, 'pa_brand', true); 

    $thedata = Array('pa_brand'=>Array(
     'name'=>'pa_brand', 
     'value'=>$productBrand, 
     'is_visible' => '1', 
     'is_taxonomy' => '1' 
    )); 

    update_post_meta( $productID,'_product_attributes',$thedata); 

Mais mon problème est que cette façon, ajoute l'attribut de la marque, mais les attributs que j'avais déjà se perdent.

Le résultat est que j'obtiens tous les produits avec un seul attribut.

Est-il possible simplement d'ajouter un attribut, sans rien perdre de la précédente (attributs -

Répondre

1

update_post_meta() toujours changer la valeur lorsqu'elle est appelée - vous avez besoin pour obtenir les méta-données existantes en premier lieu et stocker que dans le tableau aussi:

$term_taxonomy_ids = wp_set_object_terms($productID, $productBrand, 'pa_brand', true); 

$existingData['pa_size'] = get_post_meta($productID, 'pa_size', true); 
$existingData['pa_color'] = get_post_meta($productID, 'pa_color', true); 

$thedata = Array(
    'pa_brand'=>Array(
     'name'=>'pa_brand', 
     'value'=>$productBrand, 
     'is_visible' => '1', 
     'is_taxonomy' => '1' 
    ), 
    'pa_size' => Array(
     'name'=>'pa_size', 
     'value'=>$existingData['pa_size'], 
     'is_visible' => '1', 
     'is_taxonomy' => '1' 
    ), 
    'pa_color' => Array(
     'name'=>'pa_color', 
     'value'=>$existingData['pa_color'], 
     'is_visible' => '1', 
     'is_taxonomy' => '1' 
    ) 
); 

update_post_meta( $productID,'_product_attributes',$thedata); 
+0

Super! Cela semble fonctionner correctement! Je viens d'ajouter 'is_variation' => '1' "dans les tableaux de 'pa_size' & 'pa_color' afin qu'il ne supprime pas les variations de ces attributs! Merci beaucoup! –

+0

Hmm je suis sorti avec un problème. , ça marche bien, mais maintenant je vois que quand je cours le même code, la valeur de pa_brand dans la page d'édition des produits est vide J'ai vérifié que le $ productBrand a une valeur –

+0

hmmm ... Laissez-moi un Un peu de réflexion - je suis au travail maintenant, donc je vais devoir jeter un coup d'oeil plus tard aujourd'hui –

0

Enfin, j'ai ajouté dans la dernière ligne suivante:

wp_set_object_terms($productID, $productBrand, 'pa_brand' , true); 

et semble maintenant de ne pas havin g des problèmes. J'espère que ça t'aidera aussi.