我在Woocommerce变体产品中有一个自定义字段,我尝试在有缺货的地方更新该字段。这是代码
add_action( 'woocommerce_product_on_backorder', 'reduce_second_stock' );
function reduce_second_stock( $array ){
$temp = get_post_meta($array['product']->ID, 'second_stock', true);
update_post_meta( $array['product']->ID, 'second_stock', $temp - $array['quantity'] );
}
自定义字段称为second_stock
只是一个数字。我尝试做的是根据该订单的抢注数量减少该数字。
但是,即使产品的常规库存已更新,我的自定义字段也保持不变。
有了这个钩子,$array['product']
是WC_Product
对象,所以要获得产品 ID,你需要使用相关的方法get_id()
...... 从 WooCommerce 3 和 CRUD 对象开始,可以直接在 WC_Product
对象上使用WC_Data
方法get_meta()
、update_meta_data()
和save()
,如下所示:
add_action( 'woocommerce_product_on_backorder', 'reduce_second_stock' );
function reduce_second_stock( $array ){
if( $original_stock = $array['product']->get_meta('second_stock') ) {
$array['product']->update_meta_data( 'second_stock', ( $original_stock - $array['quantity'] ) );
$array['product']->save();
}
}
代码进入函数.php活动子主题(或活动主题(的文件。它应该有效。