2016-08-25 3 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 

: 대한