首页 > 解决方案 > 如何在 Wordpress 中设置现有产品属性的值?

问题描述

我在 WooCommerce 中的每个产品都有几个属性。其中之一被命名my-availability,我需要根据库存变化和一些条件逻辑动态更改其值。所以当库存件数发生变化(通常是按订单减少)时,my-availability属性的值也会发生变化。它不应该添加任何新属性,只需更改现有属性的值。我根本不使用产品变体。我完全是初学者,并尝试使用大量谷歌搜索来构建这段代码几天。现在我有这样的事情:

function changeatt( $order ) 
 {
  $items = $order->get_items();
  
  foreach( $items as $item ) {
    $value2 = get_field( "naceste", $item['product_id']);  //need to get value of custom field "naceste"
    $value = get_post_meta( $item['product_id'], '_stock', true );   //need to get how many pcs is on stock
   
    if ($value == 0 && $value2 > 0)
     {$avl = 'Coming soon';}

    if ($value == 0 && $value2 == 0)
      { $avl = 'Not in stock';}

    if ($value > 0)
      { $avl = 'In stock';}
      
     // update_post_meta( $item['product_id'], 'my-availability', $avl ); 
  wp_set_object_terms( $item['product_id'], $avl, 'pa_my-availability', false);
  }
}

add_action( 'woocommerce_reduce_order_stock', changeatt );

此代码实际上创建了my-availability具有正确值的新自定义字段,但我需要将其保存到名为的现有属性my-availability中。我错过了什么?

标签: wordpresswoocommerceattributesproduct

解决方案


我找到了!update_post_meta更改属性不起作用,不知道为什么。 wp_set_object_terms必须改为使用,并且pa_必须添加到属性名称中。我已将问题中的代码编辑为工作版本。之前的不工作行已被//其他初学者删除,他们将解决相同的情况以向这一行学习。我花了几天时间来解决这个问题。现在我很好奇,如何找出可以使用哪些类型的变量update_post_meta以及使用wp_set_object_terms.


推荐阅读