更新 WooCommerce 产品库存时会触发哪些挂钩

Which hook(s) are triggered when WooCommerce product stock is updated

我的产品中有一个自定义字段,每当任何变体中的库存发生变化时,它都需要通过一个函数进行更新。

有钩子吗?如果是这样,哪些以及它们的输出是什么(例如$post_id)?

我认为您正在寻找 woocommerce_reduce_order_stock 行动。 有关此 hook.

的更多信息

这里是 list 个可用的钩子。

-- 编辑

函数应如下所示:

function test( $order ) { // you get an object $order as an argument
  $items = $order->get_items();
  $items_ids = array();
  foreach( $items as $item ) {
    $items_ids[] = $item['product_id'];
  }
  die( print_r($items_ids) ); // it should break script while reduce stock
}
add_action( 'woocommerce_reduce_order_stock', 'test' );

我使用 woocommerce_product_set_stockwoocommerce_variation_set_stock 钩子实现了同样的效果。

这些挂钩 运行 当股票 发生变化 (增加或减少)时。即使购买产品后库存减少。

add_action( 'woocommerce_product_set_stock', 'stock_changed' );
add_action( 'woocommerce_variation_set_stock', 'stock_changed' );
function stock_changed( $product ) {
    // Do something
}

自 WooCommerce 4.9+ 以来,添加了 woocommerce_product_before_set_stockwoocommerce_variation_before_set_stock 以表示 product/variation stock_quantity 的值即将更改.

add_action( 'woocommerce_product_before_set_stock', 'stock_about_to_change' );
add_action( 'woocommerce_variation_before_set_stock', 'stock_about_to_change' );
function stock_about_to_change( $product ) {
    // Do something
}