2026年5月20日

2026年5月20日

WooCommerceの在庫管理を設定する方法

はじめに

WooCommerceの在庫管理機能を使うと、商品の在庫数を追跡し、在庫切れ時に自動で購入できなくするなどの制御が可能です。適切な設定で過剰販売(overselling)を防ぎましょう。

解決手順

ステップ1:在庫管理を有効化する

WooCommerce → 設定 → 商品 → 在庫
- 在庫管理を有効化: ✓(チェックを入れる)
- 保留中の注文のキャンセル時間: 60分(推奨)
- 低在庫の通知先: admin@example.com
- 低在庫しきい値: 5
- 在庫切れしきい値: 0
- 在庫切れの商品を非表示にする: チェック(任意)

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

商品を編集 → 商品データ → 在庫タブ
- 在庫数を管理する: ✓
- 在庫数: 100(実際の在庫数を入力)
- 在庫状況: 在庫あり
- 個別に販売(backorders): 許可しない
# WP-CLIで商品の在庫を設定
wp wc product update 123 --manage_stock=true --stock_quantity=100 --user=admin

# 在庫状況を確認
wp wc product get 123 --field=stock_quantity --user=admin

# 複数商品の在庫を一括確認
wp wc product list --fields=id,name,stock_quantity --user=admin --format=table

ステップ3:在庫切れ時の動作を設定する

// functions.php — 在庫切れ商品を自動的に下書きに変更
add_action('woocommerce_no_stock', function(WC_Product $product) {
    // 在庫が0になったら非表示(下書き)にする
    if ($product->get_stock_quantity() <= 0) {
        wp_update_post([
            'ID'          => $product->get_id(),
            'post_status' => 'draft',
        ]);
    }
});

// 在庫補充時に自動公開
add_action('woocommerce_product_set_stock', function(WC_Product $product) {
    if ($product->get_stock_quantity() > 0 && $product->get_status() === 'draft') {
        wp_update_post([
            'ID'          => $product->get_id(),
            'post_status' => 'publish',
        ]);
    }
});

ステップ4:低在庫通知をカスタマイズする

// functions.php — 低在庫メールの送信先を変更
add_filter('woocommerce_email_recipient_low_stock', function($recipient, $product) {
    return 'stock-manager@example.com, admin@example.com';
}, 10, 2);

// 低在庫しきい値を商品カテゴリーで変える
add_filter('woocommerce_get_low_stock_amount', function($threshold, $product) {
    if (has_term('food', 'product_cat', $product->get_id())) {
        return 20; // 食品カテゴリーは多めのしきい値
    }
    return $threshold;
}, 10, 2);

ステップ5:在庫レポートを確認する

# 在庫切れ商品を一覧表示
wp wc product list --stock_status=outofstock --fields=id,name --user=admin --format=table

# 低在庫商品を確認(在庫数が5以下)
wp eval "
\$products = wc_get_products(['limit' => -1]);
foreach (\$products as \$p) {
    if (\$p->managing_stock() && \$p->get_stock_quantity() <= 5) {
        echo \$p->get_name() . ': ' . \$p->get_stock_quantity() . PHP_EOL;
    }
}"

注意事項

  • 複数の注文が同時に処理された場合(競合状態)、在庫数が正確でなくなる場合があります。高トラフィックサイトではデータベースのトランザクション設定を確認してください
  • バックオーダー(在庫切れでも注文受付)を設定した場合は、顧客への通知メールで入荷予定日を明示してください
  • 変数商品の場合、バリエーションごとに在庫管理が必要です

まとめ

在庫管理は WooCommerce → 設定 → 商品 → 在庫 で有効化し、各商品の在庫数を設定します。WP-CLIの wp wc product update --stock_quantity=N で在庫を一括更新でき、低在庫通知で在庫切れを事前に防げます。

お気軽にご相談ください

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