如何在Wordpress中设置现有产品属性的值?

问题描述

我在WooCommerce中的每个产品都有几个属性。其中一个名为my-availability,我需要根据库存变化和某些条件逻辑来动态更改其值。因此,当更改库存数量(通常按顺序减少)时,my-availability属性的值将更改。它不应添加任何新属性,而只需更改现有属性的值即可。我完全不使用产品变体。 我是个初学者,并且尝试使用大量Google搜索在几天内构建这段代码。现在我有这样的东西:

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的现有属性中。我想念什么?

解决方法

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...