概要
woocommerce_reduce_order_stock
アクションは、WooCommerceにおいて注文の在庫を減少させる際にトリガーされるフックです。このアクションは、注文が完了した時に在庫を管理するために非常に重要です。主に以下の機能を実装する際に使用されます。
- 在庫減少の通知を送信する。
- 在庫が不足している場合のアクションを実行する。
- 在庫オプションの変更をカスタマイズする。
- 在庫管理の監査ログを生成する。
- 特定商品の在庫状況を確認する。
- セールやプロモーションのために在庫を調整する。
構文
do_action('woocommerce_reduce_order_stock', $order);
パラメータ
$order
: 在庫を減少させる対象となる WooCommerce の注文オブジェクト。
戻り値
このアクションには戻り値はありません。
使用可能なプラグインのバージョン
- WooCommerce: 3.0以降
- WordPress: 4.0以降
サンプルコード
サンプルコード 1: 在庫減少時のメール通知
このサンプルコードは、在庫が減少した際に管理者にメール通知を送ります。
add_action('woocommerce_reduce_order_stock', 'send_stock_notification', 10, 1);
function send_stock_notification($order) {
$to = get_option('admin_email');
$subject = '在庫が減少しました';
$message = '注文 #' . $order->get_id() . ' により在庫が減少しました。';
wp_mail($to, $subject, $message);
}
引用元: https://developer.woocommerce.com/
サンプルコード 2: 在庫状況の監査ログ生成
このサンプルコードは、在庫が減少するたびに監査ログを記録します。
add_action('woocommerce_reduce_order_stock', 'log_stock_audit', 10, 1);
function log_stock_audit($order) {
$log_entry = '注文 #' . $order->get_id() . ' が処理され、在庫が減少しました。';
error_log($log_entry);
}
引用元: https://developer.woocommerce.com/
サンプルコード 3: 在庫不足時のチェック
在庫を減少させる前に、在庫不足かどうかを確認します。
add_action('woocommerce_reduce_order_stock', 'check_stock_before_reduce', 10, 1);
function check_stock_before_reduce($order) {
foreach ($order->get_items() as $item) {
$product = $item->get_product();
if ($product->get_stock_quantity() <= 0) {
// 在庫が不足している場合の処理
error_log('在庫が不足している商品があります。');
}
}
}
引用元: https://developer.woocommerce.com/
サンプルコード 4: 特定の商品に対する在庫調整
このサンプルコードは、特定の商品について在庫調整を行います。
add_action('woocommerce_reduce_order_stock', 'adjust_specific_item_stock', 10, 1);
function adjust_specific_item_stock($order) {
foreach ($order->get_items() as $item) {
if ($item->get_product_id() === 123) { // 特定の商品ID
$item->set_quantity($item->get_quantity() - 2); // 在庫を2つ減少
$item->save();
}
}
}
引用元: https://developer.woocommerce.com/
サンプルコード 5: セールのための在庫調整
このコードは、セール中に在庫を特定の数に設定します。
add_action('woocommerce_reduce_order_stock', 'sale_stock_adjustment', 10, 1);
function sale_stock_adjustment($order) {
foreach ($order->get_items() as $item) {
$product = $item->get_product();
if ($product->is_on_sale()) {
$new_stock = max(0, $product->get_stock_quantity() - $item->get_quantity());
$product->set_stock_quantity($new_stock);
$product->save();
}
}
}
引用元: https://developer.woocommerce.com/
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |