【问题标题】:Read and update a custom field in woocommerce_product_on_backorder hook读取和更新 woocommerce_product_on_backorder 挂钩中的自定义字段
【发布时间】:2019-04-07 10:53:36
【问题描述】:

我在 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,它只是一个数字。我尝试做的是根据该订单的缺货数量减少该数量。

但是,即使更新了产品的常规库存,我的自定义字段也保持不变。

【问题讨论】:

    标签: php wordpress woocommerce product hook-woocommerce


    【解决方案1】:

    this hook$array['product']就是WC_Product对象,所以要获取产品ID需要使用相关方法get_id()... 由于WooCommerce 3和CRUD Objects,可以直接使用@987654326 @ 方法 get_meta(), update_meta_data()save()WC_Product 对象喜欢:

    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();
        }
    }
    

    代码进入您的活动子主题(或活动主题)的 function.php 文件中。它应该可以工作。

    【讨论】:

    • 太棒了。现在它被触发了!但是,我还有另一个问题。如果我的库存有 5 件商品并且我订购了 6 件,我预计只会从第二个库存自定义字段中删除 1 件。但是,上述操作会删除所有 6 个。有什么解决方法吗?
    • @Tasos 对不起,我在这里的回答只是让您的自定义字段允许在挂钩函数中读取和更新。对于这个其他问题,您应该提出一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    相关资源
    最近更新 更多