添加WooCommerce产品属性而不会丢失现有产品

问题描述:

我已经通过编程方式向我的WooCommerce添加了一些产品,具有两个属性(pa_size,pa_color)。他们都用于变化。现在我想创建一个php文件,它会在每个产品(pa_brand)中插入一个更多的属性。这将仅用于可视性而不用于变化。添加WooCommerce产品属性而不会丢失现有产品

我尝试了一些代码,如:

$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); 

但我的问题是,这样一来,增加了品牌属性,但我已经在属性迷路。

结果是,我得到所有产品只有一个属性。

有什么办法只是增加一个属性,又不失以前(的任何属性 -

update_post_meta()会改变的,当它被称为价值 - 你需要首先获取现有的元数据和存储该阵列太:

$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

超级!这似乎工作正常!我在'pa_size'和'pa_color'的数组中添加了'is_variation'=>'1'“,所以它不会删除这些属性的变化! 非常感谢! –

+0

嗯,我出来了一个问题。 ,它运行良好,但现在我看到,当我运行相同的代码,pa_brand在产品编辑页面中的值是空的。 我检查$ productBrand有一个值。 –

+0

hmmm ...让我有一个一点点思考 - 我现在在工作,所以今天晚些时候需要看看。 –

最后,在最后一行添加此:

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

现在好像不就吃g任何问题。我希望它也能帮助你。