2026年5月20日

2026年5月20日

WooCommerceの送料計算が正しくない場合の解決方法

はじめに

WooCommerceで送料が正しく計算されない場合、配送ゾーンの設定ミス、商品の重量・寸法未設定、セッションキャッシュなどが原因として挙げられます。

症状・原因

  • 送料が0円になる / 表示されない
  • 全注文に同じ送料が適用される
  • 送料無料条件を満たしているのに送料が発生する
  • 離島・沖縄に対して正しい送料が適用されない

解決手順

ステップ1:配送ゾーンの設定を確認する

WooCommerce → 設定 → 配送 → 配送ゾーン

設定例:

ゾーン1: 日本全国
- 地域: 日本
- 配送方法: 定額配送(¥500)/ 送料無料(¥5,000以上)

ゾーン2: 沖縄・離島
- 地域: 沖縄県
- 配送方法: 定額配送(¥1,500)

「それ以外の地域」(ゾーン外):
- 配送方法を設定しないと該当地域への注文は配送不可

ステップ2:送料無料条件を設定する

配送ゾーン → 配送方法を追加 → 送料無料
送料無料の要件:
- なし(常に無料)
- 有効なクーポン
- 最低注文金額(例: ¥5,000以上)
- 最低注文金額またはクーポン
# 送料設定を確認(WP-CLI)
wp option get woocommerce_shipping_debug_mode
wp wc shipping_zone list --user=admin --format=table
wp wc shipping_zone_method list 1 --user=admin --format=table  # ゾーンID=1の配送方法

ステップ3:送料キャッシュをクリアする

# セッションと送料キャッシュをクリア
wp wc tool run clear_sessions --user=admin
wp wc tool run clear_transients --user=admin
wp cache flush

# 送料デバッグモードを有効化
wp option update woocommerce_shipping_debug_mode yes

デバッグモードを有効にすると、カートページで各配送方法の計算過程が表示されます。

ステップ4:商品の重量・寸法を設定する

重量ベースの送料計算をする場合、商品に重量が設定されていないと計算できません。

# 商品の重量を設定
wp wc product update 123 --weight=0.5 --user=admin  # 0.5kg

# 商品の寸法を設定(長さ×幅×高さ cm)
wp wc product update 123 --dimensions='{"length":"30","width":"20","height":"10"}' --user=admin

ステップ5:送料計算のカスタマイズ

// functions.php — 特定条件で送料を変更
add_filter('woocommerce_package_rates', function($rates, $package) {
    // カートに特定の商品カテゴリがある場合は送料無料
    foreach (WC()->cart->get_cart() as $item) {
        if (has_term('heavy-item', 'product_cat', $item['product_id'])) {
            foreach ($rates as $key => $rate) {
                if ($rate->method_id === 'free_shipping') {
                    unset($rates[$key]); // 重量物は送料無料を除外
                }
            }
        }
    }
    return $rates;
}, 10, 2);

注意事項

  • 配送ゾーンは上から順に評価されます。顧客の住所が複数のゾーンに一致する場合、リスト上位のゾーンが適用されます
  • キャッシュプラグインを使用している場合、カートページとチェックアウトページをキャッシュ除外リストに追加してください
  • デバッグモードは本番環境では必ず無効化してください

まとめ

送料計算の問題は「配送ゾーンの設定確認 → セッションキャッシュのクリア → デバッグモードで詳細確認」の順で対処します。wp wc tool run clear_transientswp option update woocommerce_shipping_debug_mode yes がデバッグの第一歩です。

お気軽にご相談ください

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