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