读取并更新woocommerce_product_on_backorder钩子中的自定义字段



我在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活动子主题(或活动主题(的文件。它应该有效。

相关内容

  • 没有找到相关文章

最新更新