2016-08-25 132 views
4

我试图弄清楚如何将变体添加到并非最初可变产品的现有产品中。Woocommerce:使用现有属性添加现有产品的变体

因此,我有一件产品衬衫,我以另一种颜色获得另一种库存商品,所以我的产品进口商需要为此现有产品添加新的变体。

wp_set_object_terms ($product_id, 'black', 'pa_color', 1); 

$attr_data = Array(
      'pa_color'=>Array(
       'name' => 'pa_color', 
       'value' => '', 
       'is_visible' => '1', 
       'is_variation' => '1', 
       'is_taxonomy' => '1' 
      ) 
     ); 
update_post_meta($product_id, '_product_attributes', $attr_data); 

这增加了我的产品的颜色,但破坏了我产品上的所有现有属性。拉现有的_product_attributes只是给了我序列化的属性,所以只是在所有东西上添加新的变体都不起作用。

任何想法?

回答

1

基本问题是,product_attribute不是一个变量,它似乎有在wp_set_object_terms

我解决了没有合并我的问题是这样的:

wp_set_object_terms ($product_id, 'black', 'pa_color', 1); 

     $attr_data = Array(
      'pa_color'=>Array(
       'name' => 'pa_color', 
       'value' => '', 
       'is_visible' => '1', 
       'is_variation' => '1', 
       'is_taxonomy' => '1' 
      ) 
     ); 

     $product = new WC_Product($product_id); 

     update_post_meta($product_id, '_product_attributes', array_merge($product->get_attributes(), $attr_data)); 
-1

我有同样的问题,只是解决。

GET term_id的产品类型=可变

/** 
    SELECT $wpdb->terms.term_id FROM $wpdb->terms, $wpdb->term_taxonomy 
    WHERE name = 'variable' 
    AND taxonomy = 'product_type' 
    AND $wpdb->terms.term_id = $wpdb->term_taxonomy.term_id 
    LIMIT 1 
**/ 

$variable_term_id = 4; 

wp_set_object_terms($product_id, $variable_term_id, 'product_type' , true); //for variable product 

:)

相关问题