タグアーカイブ チェックアウト

WooCommerce 11.2.1リリース。住所フィールドと郵便番号の不具合を修正

WooCommerce 11.2.1リリース。住所フィールドと郵便番号の不具合を修正

WooCommerce 11.2.1が2026年10月9日にリリースされた。今回のドットリリースは、11.2.0で発生した2件のチェックアウト関連バグを修正する内容だ。

住所フィールドを削除したストアで発生するエラーと、アルゼンチンなど特定の国で郵便番号が拒否される問題が対象になる。セキュリティ更新とデータベース更新は含まれない。

記事を読めば、修正された2つのバグの内容と、アップデート前に確認すべきポイントがわかる。

WooCommerce 11.2.1の概要

WooCommerce 11.2.1の概要

WooCommerceはWordPressでECサイトを構築する無料プラグインだ。今回の11.2.1は「ドットリリース」と呼ばれる、バグ修正に限定された小規模な更新になる。新機能の追加はなく、11.2.0で見つかった不具合を修正するためにリリースされた。

修正対象は2件ある。1件目はクラシックチェックアウトで住所フィールドを削除したストアに発生するブロックエラーで、2件目はチェックアウトブロックでアルゼンチンなどの郵便番号が拒否される問題だ。

WooCommerceのチェックアウトには大きく分けて2つの方式がある。1つはショートコードで表示する「クラシックチェックアウト」、もう1つはGutenbergブロックエディタで構築された「チェックアウトブロック」だ。今回の修正は両方を1つずつカバーしている。

WooCommerce 11.2.1の修正対象
修正1 クラシックチェックアウトの住所フィールド削除問題
修正2 チェックアウトブロックの郵便番号バリデーション
セキュリティ更新は含まれない。データベース更新も含まれない。

このデモは、11.2.1で修正された2つの不具合と、セキュリティ更新やデータベース更新が含まれないことを示している。

クラシックチェックアウトの住所フィールド修正

クラシックチェックアウトの住所フィールド修正

クラシックチェックアウトは、ショートコード [woocommerce_checkout] で表示される従来型のチェックアウト画面だ。WooCommerceの初期から提供されている方式で、現在も多くのストアで使われている。

住所フィールドとは、請求先住所や配送先住所の入力欄のことだ。多くのストアでは必須項目だが、デジタル商品のみを販売するストアなどでは不要な場合がある。そうしたストアは、woocommerce_billing_fields または woocommerce_default_address_fields というフィルターを使って住所フィールドを削除するカスタマイズを行う。

フィルターとは、WordPressやWooCommerceの動作をサイト独自に変更するための仕組みだ。テーマのfunctions.phpやカスタムプラグインにコードを追加して使う。住所フィールドを削除するカスタマイズは、決して珍しいものではない。

11.2.0では、注文サマリーが更新される際の住所データ送信に問題があった。住所フィールドを削除したストアで、以下のような不具合が発生する可能性があった。

  • 「続行するには住所を入力してください」というエラーでチェックアウトがブロックされる
  • 税金が正しく計算されない
  • 配送方法の選択肢が表示されなくなる

11.2.1では、11.1の動作に戻す修正が入った。注文サマリーのリフレッシュ時に、住所データが正しく送信されるようになる。住所フィールドを削除するカスタマイズを利用しているストアは、このバージョンで問題が解消される。

11.2.0(住所フィールド削除時)
⚠ チェックアウトエラーが発生
「続行するには住所を入力してください」
税金が計算されない、配送方法が消える
↓
11.2.1(住所フィールド削除時)
✓ チェックアウトが正常に進む
エラーメッセージは表示されない
税金・配送方法も正しく表示される

住所フィールドを削除したストアでは、11.2.0のエラーが11.2.1で解消される。

チェックアウトブロックの郵便番号バリデーション修正

チェックアウトブロックの郵便番号バリデーション修正

チェックアウトブロックは、ブロックエディタで構築された新しいチェックアウトフローだ。カートブロックやチェックアウトブロックなど、複数のブロックを組み合わせて柔軟にレイアウトを変更できる。

バリデーションとは、入力された値が正しい形式かどうかを検証する仕組みだ。たとえば郵便番号の入力欄に「123」など桁数の少ない値を入力するとエラーになるのは、バリデーションが働いているからだ。今回の問題は、この検証が厳しくなりすぎたことによって発生した。

11.2.0では、アルゼンチンの郵便番号で州文字なしの形式(例 1213)が拒否されるようになった。さらに、エルサルバドル、セントビンセントおよびグレナディーン諸島、イギリス領ヴァージン諸島の郵便番号フォーマットも拒否されていた。

11.2.1では、アルゼンチンの州文字なし郵便番号を再び受け入れ、上記3カ国のフォーマットにも対応する。該当する国への配送を行っているストアは、チェックアウトブロックでエラーが解消される。

11.2.0(チェックアウトブロック)
✗ アルゼンチン「1213」は拒否される
州文字なしの郵便番号はエラーになる
↓
11.2.1(チェックアウトブロック)
✓ アルゼンチン「1213」を受け入れる
州文字なしの形式を再サポート

11.2.1では、アルゼンチンの州文字なし郵便番号が再び有効になる。

アップデート前の確認ポイント

アップデート前の確認ポイント

今回の修正はバグ修正に限定されているため、更新によるリスクは比較的低い。ただし、チェックアウトは売上に直結する機能だ。更新前には以下のポイントを確認しておきたい。

  • 住所フィールドを削除するカスタマイズを使っているか
  • チェックアウトブロックを利用しており、対象国に配送しているか
  • ステージング環境で実際のチェックアウトフローをテストしたか
  • 更新前にバックアップを取得しているか

特に住所フィールドを削除するカスタマイズを使っているストアは、11.2.0をスキップして11.2.1に直接更新することをおすすめする。11.2.0に更新してしまった場合は、できるだけ早く11.2.1への更新が望ましい。

この記事のポイント

  • WooCommerce 11.2.1は2026年10月9日にリリースされたドットリリース
  • クラシックチェックアウトで住所フィールドを削除したストアのエラーを修正
  • チェックアウトブロックでアルゼンチンなどの郵便番号バリデーションを修正
  • セキュリティ更新とデータベース更新は含まれない
  • 住所フィールド削除カスタマイズ利用中のストアは更新推奨
WooCommerce 11.2が登場、商品CSVのUPC照合と決済日付入力を追加

WooCommerce 11.2が登場、商品CSVのUPC照合と決済日付入力を追加

WooCommerce 11.2が2026年10月8日にリリースされた。今回のアップデートでは商品CSVインポートの照合方法が拡張され、サプライヤーから届いたUPCだけの価格表をそのまま取り込めるようになった。ほかにもチェックアウトでの日付入力、注文撤回メールの設定、カタログ画面のパフォーマンス改善が含まれる。

ECサイトを運営する担当者にとって、日々の商品管理と受注業務に直結する変更が中心だ。特に商品コードを使った一括更新は、数千点規模の在庫を扱う店舗で作業時間を大きく短縮できる。本記事ではWooCommerce 11.2の主要な変更点と、アップデート前に確認しておきたい注意事項をまとめる。

WooCommerce 11.2の主な変更点

WooCommerce 11.2の主な変更点

WooCommerce 11.2はWordPressのECプラグインとして広く利用されているWooCommerceのマイナーアップデートだ。公式ブログでは変更点を6つの項目に分けて紹介している。いずれも店舗運営の効率化に寄与する内容で、商品管理から顧客体験の改善まで幅広い。

WooCommerce 11.2の変更点マップ
商品管理 CSVインポートがUPC・GTINなどで照合できる
チェックアウト 注文時に日付入力欄を追加できる
メール設定 注文撤回メールを管理画面で設定できる
パフォーマンス カタログ画面とレポート集計が高速化
ブロック機能 商品フィルターがスティッキー表示に対応
注意点 一部メールのCC・BCC配信が停止される

上記のほか、セキュリティ改善とデータベース更新も含まれる。更新前にバックアップを取得しておくことが推奨される。

商品CSVインポートがUPC・GTINなどのコードに対応

商品CSVインポートがUPC・GTINなどのコードに対応

商品コードとは

UPC(Universal Product Code)は主に米国で使われるバーコード規格で、商品パッケージに印刷された12桁の数字を指す。GTIN(Global Trade Item Number)は国際標準の商品識別コード、EAN(European Article Number)は欧州で広く使われるバーコード、ISBNは書籍の識別コードだ。いずれも商品を一意に特定するための番号で、サプライヤーから届く価格表にはこれらのコードだけが記載されていることが多い。

インポート時の照合の流れ

WooCommerceの商品CSVインポート機能では、これまで各行を商品IDまたはSKUで照合して既存商品を更新していた。11.2では照合の優先順位が拡張され、ID、SKU、GTIN、UPC、EAN、ISBNの順に一致する商品を探す。サプライヤーからUPCだけの価格表を受け取った場合でも、そのままCSVファイルとしてアップロードできるようになった。

CSVインポートの照合順序
STEP 1 商品IDで照合
↓
STEP 2 SKUで照合
↓
STEP 3 GTIN・UPC・EAN・ISBNで照合
照合は上から順に行われ、最初に一致したコードが使われる

利用するにはインポート画面で「既存の商品を更新」を有効にする必要がある。同一商品にSKUとUPCの両方が登録されている場合はSKUが優先される仕組みだ。

チェックアウトで日付入力を追加できる

チェックアウトで日付入力を追加できる

日付フィールドの用途

チェックアウトブロックを使用している店舗では、注文手続き中に顧客へ日付を尋ねられるようになった。配達希望日や誕生日など、商品の性質に合わせて自由に用途を決められる。顧客はスマートフォンやブラウザ標準の日付ピッカーを使って日付を選択する。店舗側は選択できる日付の範囲も制限できる。

設定方法

この日付フィールドを追加するには、チェックアウトブロックの設定にショートコードスニペットを追加する。テーマのfunctions.phpやコード管理プラグインに数行のコードを貼り付けるだけで有効化できる。コードの詳細は公式のリリースノートに記載されている。

チェックアウト画面の変化
従来のチェックアウト(Before)
お名前
入力欄
配送先住所
入力欄
↓
改善後のチェックアウト(After)
お名前
入力欄
配送先住所
入力欄
配達希望日
日付を選択

この例では配達希望日を追加しているが、誕生日や引き取り希望日など、店舗の運用に合わせて自由にラベルを変更できる。

注文撤回メールを管理可能に

注文撤回メールを管理可能に

EU圏の顧客に販売している店舗向けの変更も入った。注文撤回(キャンセル要求)が発生したときに送信される2種類のメールを、管理画面から設定できるようになった。1つは顧客が受け取る確認メール、もう1つは店舗側に届く通知メールだ。

WooCommerceの設定画面にある「メール」セクションで、それぞれのメールに独自のメッセージを追加できる。プレビューで内容を確認し、通知を受け取る担当者を選び、必要なければメール自体を無効化することも可能だ。これまではコードでしか変更できなかった設定が、管理画面だけで完結するようになった。

パフォーマンス改善とブロックの新スタイル

パフォーマンス改善とブロックの新スタイル

カタログと管理画面の高速化

商品数が5点でも5万点でも、カタログ画面で商品を自由に並べ替えられるようになった。可変商品(サイズや色などのバリエーションを持つ商品)を含む店舗では、商品ページの読み込みとチェックアウト処理が高速化している。レポート集計ではデータベースへのクエリ数が減り、顧客数が増えてもメモリ使用量が増加しにくくなった。

レポート集計のパフォーマンス
従来(Before)
データベースクエリ数が多い
顧客数に比例してメモリ使用量が増加
↓
WooCommerce 11.2(After)
クエリ数を削減
メモリ使用量が顧客数に依存しない

大量の顧客データを持つ店舗ほど、この改善による管理画面の体感速度は大きく変わる。レポート表示が遅くて開くのを待っていた店舗は、更新後に改善を実感しやすい。

商品フィルターブロックのスティッキー表示

商品フィルターブロックにスティッキー(追従)表示のオプションが追加された。長いカテゴリーページを顧客が下へスクロールしても、フィルター条件が画面上部に表示され続ける。絞り込みのたびにページ先頭まで戻る手間がなくなる。

ほかにも数量セレクター(カート内のものを含む)は枠線、影、色、角丸を設定できる。商品画像には枠線、フィルターチップにはフォントと余白のコントロールと角丸が追加された。これらのスタイルは外観 > エディター > スタイル > ブロックの画面で店舗全体に一括設定するか、ブロック単位で個別に調整する。

アップデート前に知っておくべき注意点

アップデート前に知っておくべき注意点

既存メール設定への影響

パスワードリセット、新規アカウント作成、メール確認の各メールについて、自分自身をCCまたはBCCでコピー受信していた場合、その配信が停止される。これらのメールにはログインリンクが含まれるため、本人以外には送られないようにするセキュリティ上の変更だ。

ダウンロードリンクと権限の変更

標準のダウンロードリンクは従来どおり動作する。ただし、まれにカスタム登録やインポートで不正なデータを持つリンクは動作しなくなる可能性がある。顧客から報告があれば、注文画面からリンクを再発行すればよい。

ショップマネージャー(店舗運営者)が、フォーラム権限や会員権限など特定の追加権限を持つユーザーを編集できなくなる。そのようなユーザーの編集はWordPress管理者が行うことになる。

アップデート手順の注意

WooCommerce 11.2にはセキュリティ改善とデータベース更新が含まれるため、運営中のすべての店舗でアップデートを適用することが推奨される。データベース更新が走るので、事前のバックアップが必須だ。

この記事のポイント

  • WooCommerce 11.2は2026年10月8日にリリースされた
  • 商品CSVインポートがUPC・GTIN・EAN・ISBNでの照合に対応した
  • チェックアウトブロックに日付入力欄を追加できる
  • 注文撤回メールの管理画面設定が可能になった
  • パフォーマンス改善とセキュリティ更新を含むためバックアップしてアップデートを
ShopifyがWebMCPをチェックアウトに拡張、AIエージェントが注文確定まで対応

ShopifyがWebMCPをチェックアウトに拡張、AIエージェントが注文確定まで対応

Shopifyが9月28日、WebMCPツールをチェックアウトに拡張した。ブラウザエージェントは購入者のタブで開いているチェックアウトを読み取り、更新し、購入者の確認を得た上で注文を確定できるようになった。

8月時点のWebMCPは商品検索とカート管理が中心だった。チェックアウトページへの誘導はできたが、注文の確定は購入者自身が行う必要があった。今回の拡張でAIエージェントが購入完了まで関与する形になる。

この記事では4つの新ツールの役割、購入者が制御を取り戻す場面、ブラウザ自動化との比較テスト結果を解説する。

WebMCPチェックアウト拡張の概要

WebMCPチェックアウト拡張の概要

8月の展開からの進化

WebMCPとは、ブラウザ内でAIエージェントがWebサイトの機能を利用するための仕組みだ。Shopifyは2026年8月に最初のWebMCPツールを公開した。当時は商品検索とカート管理が中心で、エージェントは購入者をチェックアウトページまで誘導するに留まっていた。

9月28日の拡張により、ブラウザエージェントはチェックアウトの状態を読み取り、配送先や支払い方法を更新し、購入者の確認を得た上で注文を確定できる。Shopifyの開発者向けチェンジログは「新しいAPIを公開するわけではなく、マーチャントの設定も不要」と説明している。

新しいツールの仕組み

新しいツールは購入者が見ているチェックアウトページと同じ状態を利用する。エージェントが裏側で別のセッションを操作するのではなく、実際に開いているチェックアウトの状態を読み書きする仕組みだ。

これにより購入者とエージェントの間で情報のずれが生じにくい。チェックアウトは各更新時に独自の検証を行い、エージェントが注文の商品を変更することはできない設計になっている。

8月時点のWebMCP(Before)
AIエージェント 商品検索 → カート管理 → チェックアウトページまで誘導
注文の確定は購入者が手動で実行する必要があった
↓
9月28日以降のWebMCP(After)
AIエージェント 商品検索 → カート管理 → チェックアウト更新 → 注文確定
購入者の確認を得た上で、注文の完了まで実行できる

このデモは8月時点と9月28日以降のWebMCPの機能差を示している。エージェントが「誘導役」から「取引実行役」に変わった点が今回の拡張の本質だ。

チェックアウトで利用できる4つのツール

チェックアウトで利用できる4つのツール

各ツールの役割

ShopifyのチェックアウトWebMCPドキュメントによると、対象となるチェックアウトには4つのツールが登録される。

  • get_checkoutはチェックアウトを読み取り、購入後は注文詳細も取得する
  • update_checkoutは連絡先、配送または受け取り方法、割引コード、支払い方法、税番号などの追加項目を変更する
  • complete_checkoutは注文を確定する
  • navigate_to_storefrontはタブをストアに戻す
ツール1 get_checkout チェックアウト情報を読み取る。注文後は注文詳細も取得できる
ツール2 update_checkout 連絡先、配送方法、割引コード、支払い方法、税番号などを変更する
ツール3 complete_checkout 注文を確定する。実行前に購入者の許可が必要
ツール4 navigate_to_storefront タブをストアフロントに戻す
■ 読み取り  ■ 更新  ■ 確定  ■ 移動

4つのツールは役割が明確に分かれている。読み取り、更新、確定、移動という一連の流れをエージェントが実行できる設計だ。

支払い方法の制限

これらのツールは新しいカード情報を受け付けない。エージェントは保存済みのShop Payカードを選択するか、ゲストチェックアウトが許可している場合はエージェントが持っているShop Pay承認を利用して支援できる。

それ以外の支払い方法は購入者がチェックアウトページで直接選択する必要がある。エージェントはあくまでもShop Payの範囲内で支払いを支援する形だ。これはエージェントがクレジットカード情報を扱うリスクを避ける設計といえる。

また、エージェントはWeb Bot Authを使用してブラウザリクエストに署名する必要がある。Web Bot AuthとはShopifyがエージェントを認識するための署名方式だ。署名がない場合、リクエストは優先度が下がったり、ボット検出システムによってブロックされたりする可能性がある。

購入者が制御を取り戻す場面

購入者が制御を取り戻す場面

注文確定前の同意

Shopifyのドキュメントは、complete_checkoutを呼び出す前に現在の注文と合計を購入者に表示し、「注文の許可を得ること」をエージェントに指示している。

注目すべきは、Web Bot Auth署名、Shop Pay承認、準備完了ステータスはこの同意には該当しない点だ。エージェントが技術的に注文を確定できる状態であっても、人間の購入者が最終確認を行わない限り注文は実行されない。

これはAIエージェントの暴走を防ぐ安全設計として評価できる。自動化が進んでも、最終的な購入判断は人間が行うという原則を守っている。EC事業者にとっては、エージェントが勝手に注文を確定してしまうリスクを抑えられる仕組みだ。

支払いチャレンジとUI拡張

Shop Payログインや3D Secureなどの支払いチャレンジは、購入者にページ上での制御を戻す。3D Secureとはオンラインカード決済の追加認証方式で、不正利用を防ぐためにパスワードや生体認証を求める仕組みだ。

ブロッキングUI拡張機能やレビューステップも同様に、購入者が直接操作する場面となる。購入者はアプリが定義するチェックアウト拡張機能とのやり取りも管理する。エージェントがすべてを代行するのではなく、特定の場面では必ず人間が介入する仕組みになっている。

対象チェックアウトの条件と利用環境

対象チェックアウトの条件と利用環境

Shop Pay必須の制限

Shopifyの標準3ページチェックアウトは、購入者がShop Payでチェックアウトする場合を除き、WebMCPツールを取得しない。B2Bチェックアウト、埋め込みチェックアウト、モバイルチェックアウトSDK内のチェックアウトも対象外だ。

他のショップの商品を含むチェックアウト、ドラフト注文、注文編集、支払い回収も除外される。この制限はマーチャントにとって重要な意味を持つ。すべてのチェックアウトでAIエージェントが注文を確定できるわけではない。

現時点ではWebMCPチェックアウトの適用範囲は「Shop Payを使う標準チェックアウト」に限られる。Shop Pay以外の支払い方法を選ぶ購入者には、エージェントはチェックアウトの支援ができない。この制限がWebMCPチェックアウトの普及にどの程度影響するかは、今後の利用データを見る必要がある。

Chromiumブラウザ限定

現時点では、エージェントがWebMCPを使用できるのはChromiumベースのブラウザのみだ。ChromiumとはGoogleが開発するオープンソースのブラウザエンジンで、Google ChromeやMicrosoft Edgeが採用している。

FirefoxやSafariでは利用できない。この制限はWebMCPの普及に影響を与える可能性がある。ただしChromeとEdgeがブラウザ市場の大部分を占めていることを考えると、実用上の影響は限定的かもしれない。

Checkout WebMCPとCheckout MCPの選択

Checkout WebMCPとCheckout MCPの選択

2つのルートの違い

Shopifyはチェックアウトでのエージェント向けに2つのルートを文書化している。サーバーベースのCheckout MCPと、ブラウザ内で動作するCheckout WebMCPだ。

ShopifyはサーバーベースのCheckout MCPを推奨している。この方式ではエージェントが自身のサーバーからチェックアウトセッションを管理する。Checkout WebMCPは「エージェントがすでに購入者のブラウザで動作している場合のみ」使用するよう案内している。

両方ともUniversal Commerce Protocolのチェックアウト機能に依存し、同じチェックアウトオブジェクトを使用する。Universal Commerce ProtocolとはShopifyが提唱する商取引の共通プロトコルで、異なるシステム間で取引情報をやり取りするための標準仕様だ。

Checkout WebMCPはチェックアウトページが購入者のブラウザに登録するツールを通じて動作する。一方、Checkout MCPはサーバー側でリクエストを処理する。実行場所が異なるだけで、扱うデータは同じだ。

マーチャントの立場

どちらの方法でも、Shopifyはマーチャントが記録上のマーチャントのままであると説明している。エージェントが仲介者になっても、販売者としての責任はマーチャントに残る。

これは法的・会計的な観点で重要なポイントだ。AIエージェントが注文を確定しても、取引の主体はあくまでもマーチャントである。エージェントが誤った注文を確定した場合の責任の所在も、マーチャントが負うことになる。

ブラウザ自動化との比較テスト

ブラウザ自動化との比較テスト

成功率と速度の差

Shopifyのエージェンティックコマース担当チームに所属するGil Greenberg氏は、WebMCPとブラウザ自動化を比較する社内テストの結果を公開した。ブラウザ自動化とは、エージェントがページを読み取ってクリック操作を行う方式だ。画面上の要素を視覚的に認識して操作する必要があるため、処理が遅くなりがちだ。

テストはGPT-6 Solを使って、同じプロンプトと開始条件で実施された。2つのテストショップで合計10のチェックアウトタスクを実行した結果、WebMCPは60回すべて成功した。一方、ブラウザ自動化は60回中56回の成功だった。

ページセットアップ時間を除いた1回あたりの時間は、WebMCPが10.3秒、ブラウザ自動化が27.4秒だった。WebMCPが約2.7倍高速だった計算になる。

WebMCP
成功率 60 / 60(100%)
1回あたり 10.3秒
コスト 58%削減
↓
ブラウザ自動化
成功率 56 / 60(93.3%)
1回あたり 27.4秒
コスト 基準値

この比較はWebMCPの優位性を示している。成功率、速度、コストの3つの指標すべてでWebMCPが上回った。

コスト面の優位性

コスト面でもWebMCPが優位だった。OpenAIのリスト価格で比較すると、WebMCPのコストは1回あたり58%低かった。速度が速いだけでなく、API呼び出し回数やトークン消費量も抑えられるためだ。

ただし、この結果には注意点がある。テストはShopifyのテストショップと単一モデルで行われたもので、実際の注文やコンバージョン率などの実データは含まれていない。また、Greenberg氏の投稿には1行だけ60回の試行と一致しない合計値が含まれている。

とはいえ、WebMCPが「有望な方向性」を示していることは間違いない。ブラウザの画面を読み取ってクリックする方式よりも、専用のツールを介して直接操作する方式のほうが効率的であることは、このテスト結果から十分に裏付けられている。

この記事のポイント

  • Shopifyが9月28日、WebMCPをチェックアウトに拡張した
  • エージェントがチェックアウトの読み取り、更新、注文確定まで実行できる
  • 注文確定には購入者の明示的な同意が必須
  • Shop Pay必須の制限があり、対象チェックアウトは限定的
  • ブラウザ自動化との比較テストで成功率100%、速度2.7倍、コスト58%削減を達成
  • マーチャントが個々のツールをオフにできるかは未確認
WooCommerceで小数数量の購入が通らない時の原因と対処法

WooCommerceで小数数量の購入が通らない時の原因と対処法

WooCommerceのチェックアウトで小数数量(1.5kgや0.8mなど)を指定すると、line_itemsパラメータが無効というエラーが表示され、注文が完了できなくなる。原因はWooCommerceのデフォルト仕様でカート内の数量が整数として扱われるため。数量単位を変えて整数にするか、小数数量対応のプラグインを導入すれば解決できる。

なぜWooCommerceで小数数量を購入できないのか

なぜWooCommerceで小数数量を購入できないのか

WooCommerceの商品数量フィールドは、標準状態では1、2、3といった整数しか受け付けない。ところが、計量販売や布地・配線材など小数単位で売りたい商品は多く、小数を入力できるよう改造したサイトも存在する。

問題が表面化するのは、チェックアウトブロックを使っている場合だ。このブロックはStore APIと呼ばれるREST APIを通じて注文データをサーバーに送る。Store APIは送られてきた注文明細(line_items)を検証する際に、数量を整数としてチェックする。ここで小数が混ざっていると「line_itemsパラメータが無効」というエラーを返す。

従来のクラシックチェックアウト(ショートコード方式)では別の仕組みで注文を送るため、同条件でもエラーが出ないことがある。つまり「カートには小数で入るのに、チェックアウトブロックだけ失敗する」という症状になりやすい。

エラー状態
カートに小数数量(例 1.5)が入る → チェックアウトブロックがStore APIへ送信 → line_itemsパラメータが無効
■ APIスキーマが数量を整数として検証し拒否
↓
修正後
数量を整数に変換(例 1.5kg → 1500g または 15個) → Store APIへ送信 → 検証を通過し注文完了
■ 整数のみで送信されるためエラーが発生しない
■ 小数数量によるエラー  ■ 整数変換後の成功フロー

このデモは、小数数量がAPI検証で拒否される流れと、単位を変換して整数にした場合の成功フローを示している。エラーの根本原因はフロント側の表示ではなく、APIが受け取る数量の形式にある。

数量単位を変えて整数だけで販売する手順

数量単位を変えて整数だけで販売する手順

もっとも手軽で確実な方法は、商品の販売単位そのものを細かくして、顧客が常に整数で数量を入力できるようにする方法だ。たとえば1.5kgの商品を売るなら、販売単位を「kg」から「100g」に変更し、顧客には15と入力してもらう。

食品・重量商品の場合

コーヒー豆や精肉、チーズなど重量で売る商品では、単位をグラムに切り替えるだけで解決できる。商品名に「100gあたり」と明記し、価格も100g単位で設定する。1.5kg買いたい顧客は数量欄に15と入力すればよい。

布地・ロープ・配線材の場合

メーター単位で切売りする商品は、センチメートル単位に変換するのが有効だ。1.5mは150cmとして、数量欄には150と入力してもらう。商品タイトルに「1cm単位で販売」と明記すれば混乱も防げる。

在庫管理とSKUの見直し

単位を変えたら在庫数とSKUも新しい単位に合わせて更新する必要がある。1kgの在庫は1000gとして記録し、SKUも単位が分かる番号に変更しておくと後の運用が楽になる。既存の注文データには影響しないので、商品単価と在庫だけを慎重に更新する。

小数数量対応のプラグインで解決する方法

小数数量対応のプラグインで解決する方法

どうしても小数数量を維持したい場合は、小数数量に対応したプラグインを導入する方法がある。WooCommerce公式のエクステンションストアには、数量の刻み幅を小数で設定できる拡張が複数配布されている。

プラグインを選ぶ際の確認ポイントは、次の3点だ。まず、チェックアウトブロック(Store API)に対応していること。フロント側の数量入力だけを変更しても、API検証で拒否されれば同じエラーが再発する。次に、在庫管理でも小数を扱えること。最後に、WooCommerceの最新バージョンで動作確認されていること。

導入後は、商品編集画面に小数ステップの設定欄が追加される。数量の刻み幅を0.1に設定し、最小数量も小数で指定する。設定を保存したら、必ずテスト注文で小数数量が通るか確認する。カートに入れる段階とチェックアウト実行の両方でエラーが出ないことを確かめる。

開発者向けカスタムコードで数量の小数を許可する方法

開発者向けカスタムコードで数量の小数を許可する方法

自作テーマやカスタムプラグインで対応する場合は、数量入力フィールドの引数をフィルターで変更する。以下のコードは、テーマのfunctions.phpやCode Snippetsプラグインに追加する想定だ。

add_filter( 'woocommerce_quantity_input_args', 'allow_decimal_quantity', 10, 2 );

function allow_decimal_quantity( $args, $product ) {
    $args['step']  = '0.1';
    $args['min_value'] = '0.1';
    return $args;
}

ただし、このコードだけではフロント側の入力欄が小数に対応するだけで、Store APIの検証までは通過しないことがある。チェックアウトブロックを使う場合は、API側のスキーマを拡張する追加のフィルターが必要になる。Store APIのline_itemsで数量の型を変更するには、より深い層への対応が求められる。

実務では、Store API対応を自前で実装するより、小数数量対応をうたうプラグインを利用する方がリスクが小さい。APIスキーマの変更はアップデートで挙動が変わる可能性があり、受注データの整合性にも関わるためだ。

小数数量が必要な商品の販売方法を再設計する

エラーの対処と並行して、そもそも小数数量を使わずに済む販売設計を検討するのも有効だ。商品の性質によっては、属性(バリエーション)を使う方がシンプルで顧客にも分かりやすい。

よく買われるサイズをバリエーションで用意する

布地やケーブルなら「50cm」「1m」「1.5m」「2m」のように、よく注文されるサイズをあらかじめバリエーションとして登録する。顧客は数量1を選ぶだけで済み、小数入力は不要になる。在庫管理も単位が明確になるため、発注ミスも減らせる。

計量販売プラグインの活用

重量や長さに応じて価格を自動計算する計量販売向けの拡張を使う手もある。顧客が重さや長さを入力すると、対応する価格が自動で表示される仕組みだ。この方式なら小数数量を直接カートに入れる必要がなく、エラーの発生を回避できる。

よくある質問

小数数量を使うと必ずこのエラーになりますか

いいえ。従来のクラシックチェックアウト(ショートコード方式)では、フロント側で小数を許可していれば通ることがある。エラーが起きやすいのはチェックアウトブロックを使っており、Store API経由で注文を送信する構成だ。

商品ごとに小数数量を許可できますか

できる。小数数量対応プラグインの多くは商品単位で設定を持っており、小数を許可する商品と整数のみの商品を混在させられる。カスタムコードでも商品IDやカテゴリを条件にフィルターを適用できる。

数量単位をgに変更すると在庫管理はどうなりますか

在庫数も新しい単位に合わせて記録し直す必要がある。1kgの在庫は1000gとして登録し、SKUも単位が分かる体系に変更するのが望ましい。既存の注文履歴には影響しないため、商品単価と在庫数を慎重に更新すればよい。

すでに小数数量で登録した商品がある場合はどうすればよいですか

商品データを確認し、数量の刻み幅や単位設定を見直す。複数商品を一括で変更するなら、WooCommerce標準の商品CSVエクスポート・インポート機能を使うと効率的だ。変更後はテスト注文で必ず動作を確認する。

チェックアウトブロックだけでエラーになるのはなぜですか

チェックアウトブロックはStore APIというREST API経由で注文データをサーバーに送信する。このAPIがline_itemsを検証する際、数量を整数としてチェックするため、小数が混ざると検証エラーになる。クラシックチェックアウトは別の送信方式のため、同じ条件でも通ることがある。

この記事のポイント

  • 小数数量の購入エラーはStore APIのline_items検証が原因
  • もっとも手軽な対処は数量単位を変えて整数で販売すること
  • 小数数量を維持したい場合は対応プラグインの導入が有効
  • チェックアウトブロック対応の有無を確認してからプラグインを選ぶ
  • カスタムコードはフロント側だけでは不十分でAPI側の対応も必要
  • 属性や計量販売方式への再設計も検討価値がある
カートが0円だとWooCommerceの注文が完了しない時の直し方

カートが0円だとWooCommerceの注文が完了しない時の直し方

なぜカート合計が0円だとチェックアウトが完了しないのか

なぜカート合計が0円だとチェックアウトが完了しないのか

WooCommerce の最低購入金額制御プラグイン(たとえば Minimum Purchase Amount Control など)は、指定した金額未満の注文を受け付けないように設計されている。このプラグインは通常、カートの合計金額が設定した最低金額を下回るとチェックアウトをブロックする。しかし「無料商品を許可する」「クーポンで0円になる場合を許可する」といった例外ルールを設定していても、内部的にはチェックアウト処理の最終段階で金額を再評価し、ブロックをかけてしまうケースがある。

このとき画面上では「注文する」ボタンを押せてしまい、一見すると購入が完了したように見える。ところが実際には注文データが正しく確定されず、商品がカートに取り残される。リダイレクト先の注文確認ページ(サンキューページ)にも遷移しない。プラグインを停止すると問題が消えることから、プラグインのゼロ円ブロック機能が直接の原因だ。

フィルターフックでゼロ円チェックアウトを許可する手順

フィルターフックでゼロ円チェックアウトを許可する手順

このプラグインには、ゼロ円の注文を許可するための専用フィルターフック ct_mpac_allow_zero_total が用意されている。このフックを有効にすれば、無料商品やクーポンで合計が0円になったカートでも問題なくチェックアウトが完了するようになる。

以下の手順では、子テーマの functions.php に数行のコードを追加する。子テーマを使っていない場合は、Code Snippets プラグインなどを利用しても同じ結果が得られる。

STEP 1 子テーマの functions.php を開く(外観 → テーマファイルエディター)
↓
STEP 2 ファイル末尾に以下のコードを追加する
↓
STEP 3 ファイルを更新して保存する
↓
STEP 4 0円になる商品をカートに入れてチェックアウトをテストする

追加するコードは次のとおりだ。

add_filter( 'ct_mpac_allow_zero_total', '__return_true' );

この1行で、プラグインがゼロ円の注文を許可するようになる。__return_true は WordPress の組み込み関数で、単純に true を返す。フィルターにこれを渡すことで「常に許可する」という挙動に切り替わる仕組みだ。

Code Snippets プラグインを使う場合は、新規スニペットを追加し、上記のコードを貼り付けて「サイト全体で実行」に設定すればよい。

コード追加後も改善しない場合の確認ポイント

コード追加後も改善しない場合の確認ポイント

フィルター名がプラグインのバージョンと合っているか確認する

プラグインのバージョンアップによってフィルター名が変更されている可能性がある。プラグインの公式ドキュメントやソースコード内で apply_filters を検索し、最新のフック名を確認するのが確実だ。特にプラグイン名が似ている別の最低購入金額プラグインに乗り換えた場合は、フック名がまったく異なるため注意が必要になる。

キャッシュ系プラグインやサーバーキャッシュの影響を疑う

functions.php を更新したのに改善しない場合、WordPress のキャッシュプラグインやサーバーレベルのキャッシュ(OPcache など)が原因で変更が反映されていないことがある。キャッシュをすべてクリアし、さらにブラウザのシークレットモードで動作をテストしてみる。OPcache が効いているレンタルサーバーでは、ファイル更新から数分間は古いコードが動き続けるケースもある。

決済ゲートウェイ側のゼロ円制限を調べる

ごくまれに、WooCommerce の決済ゲートウェイ自体が0円のトランザクションを許可していない場合がある。プラグインの問題が解消されたあともチェックアウトが進まないときは、Stripe や PayPal などのゲートウェイ設定で「0円の注文を許可する」オプションが存在しないか確認する。テスト用に代金引換や銀行振込など、実決済を伴わないゲートウェイに切り替えて試すのも有効な切り分け方法だ。

よくある質問

このフィルターはどのプラグインに対応しているのか

ct_mpac_allow_zero_total は、主に「Minimum Purchase Amount Control for WooCommerce」系のプラグインで使われるフックだ。プラグインの作者が異なるとフック名も変わるため、必ず利用中のプラグインのドキュメントを参照してほしい。

フィルターを追加する以外の解決策はあるか

プラグインの設定画面で「無料商品を許可」「クーポン適用後の0円を許可」といったチェックボックスが用意されていれば、そちらを有効にするだけで直ることもある。設定が存在しない場合や、設定を入れても効かないときにフィルターを使うのが確実な方法だ。

ゼロ円の注文を許可するとセキュリティ上のリスクはあるか

意図した無料商品や割引クーポン以外で0円になるカートが発生しないよう、クーポンの利用条件や商品価格の設定を適切に管理していれば大きなリスクにはならない。ただし、テストや不正利用対策として、定期的に0円注文のログを確認する運用は推奨する。

子テーマを使わずにコードを追加する方法はあるか

Code Snippets プラグインや WPCode プラグインを利用すれば、テーマファイルを直接編集せずにフィルターフックを安全に追加できる。テーマのアップデートでコードが消える心配もなく、管理画面からオンオフを切り替えられるため、まずはこちらを試すのが安心だ。

この記事のポイント

  • WooCommerce の最低購入金額プラグインが0円の注文をブロックし、チェックアウトが完了しない
  • フィルターフック ct_mpac_allow_zero_total を functions.php に追加すればゼロ円注文を許可できる
  • Code Snippets プラグインを使えば子テーマの編集なしで安全にコードを追加可能
  • 改善しない場合はキャッシュのクリアや決済ゲートウェイの0円制限も確認する