如何在Woocommerce中以编程方式更新产品属性

时间:2014-07-22 16:04:28

标签: php wordpress woocommerce

我希望每次根据其他几个字段的内容保存商店中产品的属性。

但是我很难让我的属性正确显示。

最初,我尝试使用以下函数根据接受的答案to this question更新产品:

add_action( 'woocommerce_process_product_meta', 'update_dietary' );

function update_dietary( $object_id ) {
  wp_set_object_terms( $object_id, 'UK Manufactured', 'pa_dietary' , false);
}

这会将"UK Manufactured"添加到"pa_dietary"分类法可用的术语列表中,但在我检查它们时,它们在产品属性中不可见。

在此之后,我尝试了上述问题中提供的第二个答案的变体:

add_action( 'woocommerce_process_product_meta', 'update_dietary' );

function update_dietary( $object_id ) {
  $product_attributes = array();
  $product_attributes['pa_dietary'] = array(
      'name' => 'Dietary',
      'value' => 'UK Manufactured',
      'position' => 1,
      'is_visible' => 1,
      'is_variation' => 1,
      'is_taxonomy' => 0
  );

  update_post_meta( $object_id,'_product_attributes', $product_attributes);
}

这也无法更新产品的属性。

此时我不知道下一步该尝试什么。使用woocommerce_process_product_meta动作似乎是有效的,因为该术语确实被添加到Wordpress中,但我认为必须有一些关于Woocommerce如何处理产品属性的遗漏。

如果有人能指出我正确的方向,我将非常感激。

1 个答案:

答案 0 :(得分:0)

尝试增加挂钩的优先级,如下所示:

add_action( 'woocommerce_process_product_meta', 'update_dietary',999 );