【问题标题】:How do I update product attributes programatically on product save in Woocommerce如何在 Woocommerce 中以编程方式更新产品保存的产品属性
【发布时间】:2015-03-25 00:26:15
【问题描述】:

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

但是我正在努力让我的属性正确显示。

最初我尝试使用以下函数根据接受的答案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 如何处理产品属性,我必须缺少一些东西。

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

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    尝试增加你的钩子的优先级,像这样:

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

    【讨论】:

      猜你喜欢
      • 2018-12-02
      • 1970-01-01
      • 2015-06-15
      • 2019-01-27
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      相关资源
      最近更新 更多