2026年8月1日

2026年8月1日

WooCommerceの在庫管理を最適化する方法・在庫切れ・バックオーダー設定

はじめに

「在庫が0になっても注文が入ってしまった」「在庫が少なくなったタイミングで通知を受け取りたい」——WooCommerceの在庫管理機能を正しく設定することで、売り越しを防ぎ、補充のタイミングを逃しません。設定方法を体系的に解説します。

症状・原因

WooCommerceの在庫管理はデフォルトで無効です。WooCommerce → 設定 → 商品 → 在庫で有効化しなければ、在庫数を入力しても販売数の自動減算が行われません。また、シンプル商品と可変商品では在庫設定の場所が異なります。

解決手順

ステップ1:グローバル在庫設定を有効化する

WooCommerce → 設定 → 商品タブ → 在庫
→ 「在庫管理を有効にする」: チェックON
→ 在庫保留時間: 60分(カートに入れた在庫の保留時間)
→ 低在庫しきい値: 5(5個以下で通知)
→ 在庫切れ通知先: admin@example.com
→ 在庫切れの商品を非表示にする: 任意
→ 保存

ステップ2:個別商品の在庫を設定する

商品編集 → 商品データ → 在庫タブ

SKU: PROD-001(任意・一意の商品コード)
在庫管理: チェックON
在庫数: 50
在庫状態: 在庫あり / 在庫切れ / バックオーダー

バックオーダー: 
  - 許可しない: 在庫0で購入不可
  - 通知付きで許可: 購入可・「入荷予定」表示
  - 許可する: 購入可・通知なし

WP-CLIで在庫を一括更新する場合:

# 商品IDと在庫数を指定して更新
wp wc product update 123 \
  --manage_stock=true \
  --stock_quantity=50 \
  --stock_status="instock" \
  --backorders="no" \
  --user=1

# 全商品の在庫状況を確認
wp wc product list \
  --fields=id,name,stock_quantity,stock_status \
  --format=table \
  --user=1

ステップ3:低在庫・在庫切れ通知を設定する

// 在庫切れ時に追加通知を送る
add_action( 'woocommerce_no_stock', function( $product ) {
    $admin_email = get_option( 'admin_email' );
    wp_mail(
        $admin_email,
        '【在庫切れ】' . $product->get_name(),
        '在庫が0になりました。補充してください。SKU: ' . $product->get_sku()
    );
} );

// 低在庫時の通知(カスタムしきい値)
add_action( 'woocommerce_low_stock', function( $product ) {
    error_log( '低在庫: ' . $product->get_name() . ' 残り' . $product->get_stock_quantity() . '個' );
} );

ステップ4:バックオーダー商品のメッセージをカスタマイズする

// バックオーダー時の表示メッセージを変更
add_filter( 'woocommerce_get_availability', function( $availability, $product ) {
    if ( $product->is_on_backorder( 1 ) ) {
        $availability['availability'] = '入荷予定(2〜3週間)';
        $availability['class'] = 'available-on-backorder';
    }
    return $availability;
}, 10, 2 );

ステップ5:在庫数をプログラムから更新する

// 在庫を増減させる(入荷処理など)
$product_id = 123;
$product = wc_get_product( $product_id );

// 在庫を追加
wc_update_product_stock( $product, 20, 'increase' );

// 在庫を設定(絶対値)
wc_update_product_stock( $product, 50, 'set' );

// バリエーション商品の在庫更新
$variation = wc_get_product( 456 ); // バリエーションID
wc_update_product_stock( $variation, 10, 'set' );

// 在庫状態を明示的に更新
WC_Product_Data_Store_CPT::update_stock_status( $product_id );

注意事項

  • 在庫保留時間内に決済が完了しなかった注文は自動的にキャンセルされ、在庫が戻ります。
  • バックオーダーを許可する場合は、納期表示を明確にして顧客トラブルを防いでください。
  • キャッシュプラグインを使用している場合、在庫数表示がキャッシュされることがあります。在庫ページをキャッシュ除外に設定してください。

まとめ

WooCommerceの在庫管理は「グローバル設定有効化→個別商品設定→通知設定→バックオーダー設定」の流れで構築できます。SKUを活用した商品コード管理と組み合わせて、在庫の見える化を進めましょう。関連記事:WooCommerceの商品バリエーション設定方法WooCommerceの送料設定を正しく行う方法

お気軽にご相談ください

お見積りへ お問い合わせへ