Reputation: 1825
I have a custom field in my products, that needs to be updated through a function, whenever the stock in any of the variations change.
Are there hooks for this? If so, which ones and what is their output ($post_id
for example)?
Upvotes: 2
Views: 8440
Reputation: 663
I have achieved the same using woocommerce_product_set_stock
and woocommerce_variation_set_stock
hook.
These hooks run when the stock is changed (either increased, or decreased). Even after the stock is decreased after product purchase.
add_action( 'woocommerce_product_set_stock', 'stock_changed' );
add_action( 'woocommerce_variation_set_stock', 'stock_changed' );
function stock_changed( $product ) {
// Do something
}
Since WooCommerce 4.9+, woocommerce_product_before_set_stock
and woocommerce_variation_before_set_stock
are added to signal that the value of stock_quantity
for a product/variation is about to change.
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
}
Upvotes: 8
Reputation: 551
I think you are looking for woocommerce_reduce_order_stock action. More info about this hook.
Here is a whole list of available hooks.
-- EDIT
Function should look like this:
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' );
Upvotes: 7