プラグインWooCommerceのwoocommerce_reduce_order_item_stock関数の使用方法・解説

概要

woocommerce_reduce_order_item_stock は、WooCommerceのプラグインで使用される関数で、特定の注文アイテムの在庫を減少させる機能を実装します。この関数は、商品が販売された際に在庫が正しく管理されることを保証するために用いられます。具体的には、以下のようなケースでよく使われます。

  1. 商品がカートに追加された際の在庫管理
  2. 注文が確定した際の在庫減少
  3. 購入キャンセル時の在庫復元
  4. 定期購入商品の管理
  5. イベントの登録等、一時的な商品の管理
  6. 課金の再試行時の在庫管理

構文

woocommerce_reduce_order_item_stock( $order_item );

パラメータ

  • $order_item: 在庫を減少させる対象の注文アイテムのオブジェクト。

戻り値

この関数は、何も返さず、在庫管理に関連する処理を実行します。

使用可能なバージョン

  • WooCommerceのバージョン: 4.0.0以降
  • WordPressのバージョン: 5.0以降

この関数のアクションでの使用可能性

アクション 使用例
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

サンプルコード1

add_action( 'woocommerce_order_status_completed', 'custom_reduce_order_item_stock' );
function custom_reduce_order_item_stock( $order_id ) {
    $order = wc_get_order( $order_id );
    foreach ( $order->get_items() as $item_id => $item ) {
        $product = $item->get_product();
        if ( $product ) {
            $product->reduce_stock( $item->get_quantity() );
        }
    }
}

このサンプルコードは、注文が完了した際に在庫を減少させる処理を行います。注文のアイテムをループし、それぞれの商品の在庫を減らします。

サンプルコード2

add_action( 'woocommerce_order_status_cancelled', 'custom_cancel_order_item_stock' );
function custom_cancel_order_item_stock( $order_id ) {
    $order = wc_get_order( $order_id );
    foreach ( $order->get_items() as $item_id => $item ) {
        $product = $item->get_product();
        if ( $product ) {
            $product->increase_stock( $item->get_quantity() );
        }
    }
}

このサンプルコードは、注文がキャンセルされた場合、アイテムの在庫を復元します。キャンセルされた注文のアイテムを処理し、それぞれの在庫を増やします。

サンプルコード3

add_action( 'woocommerce_checkout_order_processed', 'custom_checkout_item_stock' );
function custom_checkout_item_stock( $order_id ) {
    $order = wc_get_order( $order_id );
    foreach ( $order->get_items() as $item_id => $item ) {
        $product = $item->get_product();
        if ( $product ) {
            $product->reduce_stock( $item->get_quantity() );
        }
    }
}

このコードは、チェックアウト処理が終わった後に在庫を減少させるためのもので、決済が完了したアイテムの在庫を減らします。

サンプルコード4

add_action( 'woocommerce_order_status_refunded', 'custom_refund_order_item_stock' );
function custom_refund_order_item_stock( $order_id ) {
    $order = wc_get_order( $order_id );
    foreach ( $order->get_items() as $item_id => $item ) {
        $product = $item->get_product();
        if ( $product ) {
            $product->increase_stock( $item->get_quantity() );
        }
    }
}

このサンプルコードは、返金処理が行われた際に在庫を増やします。未使用のアイテムが再度購入可能になるようにアイテムの在庫を復元します。

サンプルコード5

add_action( 'woocommerce_cart_item_removed', 'custom_remove_cart_item_stock' );
function custom_remove_cart_item_stock( $cart_item_key ) {
    $cart_item = WC()->cart->get_cart_item( $cart_item_key );
    if ( isset( $cart_item['product_id'] ) ) {
        $product = wc_get_product( $cart_item['product_id'] );
        if ( $product ) {
            $product->increase_stock( 1 ); // 1つのアイテムを戻す
        }
    }
}

このコードは、カートからアイテムが削除された際にそのアイテムの在庫を戻す処理を行います。カートから削除されたアイテム分だけ在庫が回復されます。

注意事項

すべてのサンプルコードは、WooCommerceのプラグインが正常に動作する環境でのみ使用してください。また、適切なテストを行った上で本番環境に適用してください。

この関数について質問する


上の計算式の答えを入力してください