2017-06-21 143 views
1

我已經通過編程方式向我的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); 

但我的問題是,這樣一來,增加了品牌屬性,但我已經在屬性迷路。

結果是,我得到所有產品只有一個屬性。

有什麼辦法只是增加一個屬性,又不失以前(的任何屬性 -

回答

1

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 ...讓我有一個一點點思考 - 我現在在工作,所以今天晚些時候需要看看。 –

0

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

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

現在好像不就吃g任何問題。我希望它也能幫助你。