woocommerce:库存更新时运行功能

Luc*_*Luc 0 php wordpress woocommerce

我的产品中有一个自定义字段,每当任何变化的库存发生变化时,都需要通过功能进行更新。有钩子吗?如果是这样,哪些输出是什么(例如$ post_id)?

谢谢!

-编辑

function test() {
  print_r('test');
}
add_action( 'woocommerce_reduce_order_stock', 'test' );
Run Code Online (Sandbox Code Playgroud)

小智 7

我已经实现了相同的使用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
}
Run Code Online (Sandbox Code Playgroud)

自 WooCommerce 4.9+ 起,添​​加woocommerce_product_before_set_stock和来表示产品/变体woocommerce_variation_before_set_stock的值即将更改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
}
Run Code Online (Sandbox Code Playgroud)


pa7*_*ryk 5

我认为您正在寻找woocommerce_reduce_order_stock操作。有关此钩子的更多信息。

这是可用钩子的完整列表

-编辑

函数应如下所示:

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' );
Run Code Online (Sandbox Code Playgroud)