タグアーカイブ 開発者向け

WooCommerce Dual APIが専用プラグインに移行、コアから削除へ

WooCommerce Dual APIが専用プラグインに移行、コアから削除へ

WooCommerce 11.2で、実験的なDual APIエンジンがコアから削除され、専用プラグインとして提供される。10.9から11.1まで利用できた検証用の商品・クーポンAPIも廃止されるため、使っていた開発者は対応が必要だ。

Dual APIとはPHPクラスからGraphQLエンドポイントを自動生成するコードファーストな仕組みで、WooCommerce 10.9で実験機能として導入された。今回の変更は、開発の自由度を高めるための構成変更である。

WooCommerce 11.2でDual APIの提供形態が変わる

WooCommerce 11.2でDual APIの提供形態が変わる

WooCommerce 10.9で導入されたDual APIは、PHPクラスを定義するだけでGraphQLエンドポイントを生成できる実験的な拡張機能だった。これまではWooCommerce本体に組み込まれ、フィーチャーフラグで有効化する方式だった。

WooCommerce 11.2では、このDual APIエンジンがWooCommerceコアから削除される。代わりに、WooCommerce Dual APIプラグインとして独立したリポジトリで提供される形だ。

WooCommerce 10.9〜11.1(Before)
WooCommerceコア にDual APIエンジンを内蔵
開発者 はフィーチャーフラグで有効化
商品・クーポンの検証用APIも利用可能
↓
WooCommerce 11.2以降(After)
専用プラグイン として独立提供
開発者 はプラグインをインストールして有効化
検証用APIは削除される

この変更により、WooCommerce本体のリリースサイクルに縛られず、Dual APIだけを柔軟にアップデートできるようになる。Dual APIエンジン自体は、独自のAPIを開発したいエクステンション開発者にとって引き続き有用だ。

検証用の商品・クーポンAPIは削除される

WooCommerce 10.9から11.1まで、商品とクーポンに関する検証用APIが組み込みで提供されていた。このAPIはWooCommerce 11.2で削除される。

この検証用APIを使っていた開発者は、利用を停止するか、自前のエクステンションで同等のAPIを構築する必要がある。注意点として、Dual APIプラグインをインストールしても、この検証用エンドポイントが復活することはない。

Dual API移行で開発者が知るべき変更点

Dual API移行で開発者が知るべき変更点

独自のDual APIを開発しているエクステンション開発者には、いくつか重要な変更がある。フィーチャーフラグの廃止、APIビルダースクリプトの移設、ドキュメントの場所変更、そして依存関係の宣言方法だ。

プラグイン依存関係をヘッダーに宣言する

これまでDual APIエンジンを有効化していたフィーチャーフラグは利用できなくなる。代わりに、Dual APIプラグインをインストールして有効化することでエンジンが使えるようになる。プラグインの要件はWooCommerce 11.2以上、PHP 8.1以上だ。

エクステンションがDual APIエンジンに依存する場合、プラグインのヘッダーで両方の依存関係を宣言する必要がある。具体的には以下のように記述する。

Requires Plugins: woocommerce, woocommerce-dual-api

この記述により、エクステンションのインストール時にWooCommerce本体とDual APIプラグインの両方が必要であることが明示される。依存関係の宣言は、プラグインの動作に必要な前提条件をユーザーに伝える重要な役割を果たす。

APIビルダーとドキュメントの場所が変わる

APIビルダースクリプトは、WooCommerce Dual APIプラグインのリポジトリに移動した。利用するには、プラグインをインストールするか、リポジトリをローカルにクローンする。

ドキュメントもDual APIプラグインのリポジトリ内に移設された。GitHub Pagesでも閲覧できる形で提供されている。開発者は最新のドキュメントをプラグインリポジトリで確認することになる。

STEP 1 Dual APIプラグインをインストールして有効化
↓
STEP 2 エクステンションのヘッダーに依存関係を宣言
↓
STEP 3 エクステンション内でGraphQLエンドポイントを登録
↓
STEP 4 独自のGraphQL APIとして利用可能

エンドポイント登録のコード例

Dual APIプラグインはエンジンを提供し、エクステンション側で独自のGraphQLエンドポイントを登録する。WooCommerceのシンプルイベントサンプルプラグインから、登録方法のコードを示す。

use Automattic\WooCommerce\Api\Infrastructure\Main as DualApiMain;

add_action(
	'plugins_loaded',
	static function () {
		if ( method_exists( DualApiMain::class, 'register_graphql_endpoint' ) ) {
			DualApiMain::register_graphql_endpoint(
				__DIR__,
				'wc',
				'/graphql/simple-events'
			);
		}
	}
);

このコードは、プラグインの読み込み時にDual APIエンジンが利用可能か確認し、利用可能であればGraphQLエンドポイントを登録する。エンドポイントのパスや名前空間はエクステンションごとに自由に設定できる。

Dual APIは引き続き実験的ステータス

Dual APIは引き続き実験的ステータス

Dual APIはプラグインに移行した後も、実験的なステータスは変わらない。Automattic\WooCommerce\Api名前空間以下のすべての要素は、後方互換性のない形で変更される可能性がある。

つまり、将来のリリースでAPIの構造が変わったり、削除されたりする可能性があるということだ。このため、本番環境のエクステンションでDual APIを使用することは推奨されていない。開発用途や検証目的に限定して使うべきだろう。

⚠️ 実験的ステータスの意味
Dual APIは 後方互換性のない変更 が発生し得る
実験的機能 は将来のリリースで削除される可能性もある
本番環境での利用は推奨されない

開発者コミュニティへのフィードバック募集

開発者コミュニティへのフィードバック募集

WooCommerceチームは、Dual APIエンジンが実際に有用かどうか、非実験的な状態でWooCommerce本体に含めるべきか、改善点はないかについて、開発者からの意見を求めている。

フィードバックはGitHubの専用ディスカッションページで受け付けている。Dual APIを試した開発者は、実際の使用感や要望を共有することで、今後の方向性に影響を与えることができる。

この記事のポイント

  • WooCommerce 11.2でDual APIエンジンがコアから削除され、専用プラグインとして独立した
  • 10.9〜11.1の検証用商品・クーポンAPIは削除されるため、利用者は移行が必要
  • プラグインの要件はWooCommerce 11.2以上、PHP 8.1以上
  • 依存関係はプラグインヘッダーで宣言する
  • 引き続き実験的ステータスであり、本番利用は推奨されない
WordPress 7.2開発サイクル始動、Gutenberg 23.8と23.9の開発者向け新機能まとめ

WordPress 7.2開発サイクル始動、Gutenberg 23.8と23.9の開発者向け新機能まとめ

WordPress 7.1「Mary Lou」が2026年8月にリリースされた。レスポンシブスタイルステート、アイコン登録機能などが含まれる大型アップデートだ。まだ更新していない場合は早めの対応が推奨される。

続くGutenberg 23.8と23.9では開発者向けの改善が多数入っている。コードリファレンスの実行可能コード例、ブロックのキーボードショートカット宣言API、テーマJSONスキーマの修正など、実務に直結する変更が多い。

WordPress 7.2のBeta 1は2026年10月20〜22日、正式版は12月8〜10日に予定されている。本記事では2026年9月時点の開発者向け変更点を整理して解説する。

コードリファレンスがブラウザ上で実行可能に

コードリファレンスがブラウザ上で実行可能に

WordPress公式のコードリファレンスで大きな変化があった。コード例をその場で実行できるようになったのだ。WP_HTML_Processorクラスのclass_list()メソッドのページを開き、「Run」ボタンを押すと、Playgroundを使った実際のWordPress環境でコードスニペットが実行される。

従来のコードリファレンスは静的ページであり、コード例を読むだけだった。だが今回の変更で、関数の動作確認がブラウザ内で完結する。ドキュメントと関数定義が同じファイルに存在するため、コードと実行結果の乖離が起きにくい構造だ。

実装方法はDocBlocksの中に「php interactive」というコードフェンスを書くだけ。関数の説明コメント内に実行可能なコードを埋め込む仕組みで、ドキュメント提案として長く議論されてきた内容が実現した形だ。

ブロック開発の新APIと改善点

ブロック開発の新APIと改善点

キーボードショートカットを宣言的に定義可能に

Gutenberg 23.9では、ブロックのキーボードショートカットを宣言的に登録するAPIが追加された。これまで「Alt+Shift+2」で段落をHeading 2に変換する機能はハードコードされており、エディタパッケージごとに個別実装が必要だった。

新しいAPIでは、ブロックバリエーションにshortcutオブジェクトを指定するか、ブロック変換にshortcuts配列を指定する。後者の場合、1つの変換で最大6つのショートカットをまとめて定義できる。

インナーブロックテンプレートがブロック設定へ移行

Gutenberg 23.8では、templateとtemplateInsertUpdatesSelectionがブロックタイプ設定として追加された。従来のInnerBlocksコンポーネントのpropsを使う方式は非推奨となり、WordPress 7.2リリース前に移行することが推奨される。

この変更の背景にはリアルタイム共同編集の開発がある。propsベースの方式はマウント後にテンプレートを適用するため、3人の共同作業者がドキュメントを開いている場合、Listブロックを挿入すると3つのリスト項目が生成される問題があった。ブロックタイプ設定として宣言することで、ブロックとテンプレートが単一のストア操作で処理される。

kebab-case変換がJSとPHPで完全一致

WordPress Coreの_wp_to_kebab_case()は、数字の扱いに関して一般的なライブラリと異なる挙動をしていた。今回、JavaScript側でも同じ変換結果を返す@wordpress/kebab-caseパッケージが公開された。

一般的なライブラリの変換結果(Before)
kebabCase(‘white2white’) → white2white
kebabCase(‘font2xl’) → font2xl
kebabCase(‘white4th’) → white4th
※数字の前後で文字列が分割されず、出力が一貫していなかった
↓
@wordpress/kebab-caseの変換結果(After)
kebabCase(‘white2white’) → white-2-white
kebabCase(‘font2xl’) → font-2-xl
kebabCase(‘white4th’) → white-4th
※数字の前後にハイフンが入り、PHP版と同じ結果を返す

このデモで示したように、JSとPHPの間でスラッグ生成ロジックが統一された。ブロック名やCSSクラス名の変換で環境による差異がなくなる。

エディタが管理者カラースキームに対応

投稿エディタ、ウィジェットエディタ、カスタマイザーのウィジェットエディタが、アクティブな管理者カラースキームを反映するようになった。getAdminThemeColors()が@wordpress/admin-uiの公開APIとして提供され、拡張開発者も同じ仕組みを自前の管理画面に組み込める。

Data Viewsの改善と時刻フィールド追加

DataViewsパッケージからプライベートAPIの依存が排除された。これまで同パッケージをプラグインにバンドルすると「ロックされていないオブジェクトをアンロックできない」というエラーが出る問題があった。対応に伴い、CalendarやRangeCalendarなどのコンポーネントが公開APIとして移行している。

Gutenberg 23.8ではtime型のフィールドも追加された。営業時間やイベント開始時刻、予約枠など、日付を伴わない時刻データを扱う用途に向いている。値はHH:mm形式で保存されるため、訪問者のタイムゾーンに左右されない。

テーマ開発者向けの変更点まとめ

テーマ開発者向けの変更点まとめ

theme.jsonスキーマの修正

WordPress 7.1で導入されたレスポンシブスタイルステートと擬似クラスステートのスキーマが不完全だった。Gutenberg 23.8で複数の修正が入り、コードエディタでtheme.jsonを編集する際にステートが不正として表示されないようになった。

スタイルUIの制御オプション追加

blockStatesEditingEnabledとresponsiveEditingEnabledという2つのフラグが追加された。block_editor_settings_allフィルターを通じて無効化できる。クライアント向けのサイト構築で、設計済みのスタイルを崩させずに編集機能をロックダウンする用途に有効だ。

label要素とフォーム要素のスタイル対応

Gutenberg 23.9ではlabel要素がtheme.jsonのスタイル対象に追加された。styles.elements.labelで指定でき、Search、Form Input、Post Comments Form、Archives、Categoriesブロックなどでレンダリングされるlabelタグに適用される。

続けてcite、textInput、select要素もエディタのStylesインターフェースから直接編集できるようになった。エディタのTypographyパネルとColorsパネルで操作できる。

GroupブロックのblockGapが軸別指定に対応

GroupブロックのblockGapサポートが水平方向と垂直方向の両方に対応した。theme.jsonでblockGapの値として通常の文字列に加えて、topとleftのキーを持つオブジェクト形式を指定できる。エディタUI上ではflexレイアウトとgridレイアウトでのみ軸別コントロールが表示される。

そのほか、Listブロックがwideとfullの配置をサポート、Query No Resultsブロックがボーダーとスペーシングをサポート、Query Loopブロックがblock gapをサポートするようになった。Accordion Headingブロックのtheme.jsonスペーシングがトグルボタンに正しく適用される修正も入っている。

Playgroundの進化とWordPress 7.2の展望

Playgroundの進化とWordPress 7.2の展望

WordPress PlaygroundがWebMCPに対応した。これはAIエージェントが呼び出せるツールとしてブラウザ内のアクションを公開する草案APIだ。PlaygroundはWordPressをネストされたiframeで実行するため、新しいプロキシが埋め込みサイトのツールを外部ページに広告し、呼び出しを転送する仕組みになっている。

さらに、Playground上でWordPress 0.7まで遡って実行できるようになった。設定パネルで「Include older versions」にチェックを入れると、6.2までの全バージョンが選択肢に含まれる。PHPのバージョンも自動的にペアリングされるため、「いつこの機能が壊れたのか」を確認する用途に役立つ。

STEP 1 Beta 1(10月20〜22日)
最初のベータ版がリリースされ、新機能のテストが始まる
↓
STEP 2 Beta 2以降(11月)
追加のベータ版で機能の安定化とバグ修正が進む
↓
STEP 3 RC(リリース候補版)
正式版に向けた最終調整段階
↓
STEP 4 正式版(12月8〜10日)
WordPress 7.2が正式リリースされる
■ ベータ版  ■ 安定化  ■ RC  ■ 正式版

このタイムラインで示したように、WordPress 7.2の開発サイクルは約2ヶ月にわたって進行する。開発者向け機能の実装状況を確認しながら、互換性の検証を進めるのが良いだろう。

この記事のポイント

  • コードリファレンスがブラウザ上でコード実行に対応、Playgroundを使った動作確認が可能になった
  • ブロックのキーボードショートカットを宣言的に定義するAPIが追加された
  • インナーブロックテンプレートはブロックタイプ設定への移行が推奨される
  • theme.jsonのスキーマ修正とスタイルUIの制御オプションでテーマ開発が改善された
  • WordPress 7.2は12月8〜10日に正式リリース予定、Beta 1は10月20〜22日
WC 11.0の注文アイテム削除アクションタイミング変更と開発者対応

WC 11.0の注文アイテム削除アクションタイミング変更と開発者対応

WooCommerce 11.0.0のリリースに伴い、注文アイテム削除時のアクションフック woocommerce_removed_order_items の発火タイミングが大きく変わった。これまでは削除メソッド内で即座にデータベースからアイテムを消した直後にフックが走っていたが、今後は save() が呼ばれるタイミングまで遅延される。

この変更の本質は、注文復元フローで発生し得る「行アイテム消失」バグの修正だ。決済中断後の再開処理で、意図せず注文明細が空になる問題がこれで解消される。ただし、従来のタイミングを前提にした拡張機能やカスタムコードは、コールバックの変更が必要になる可能性がある。

この記事では、変更の背景、具体的な動作の差、そして開発者が取るべき対応策を整理する。内部的で動作確認用のフックに依存している開発者は特に注意が必要だ。

WooCommerce 11.0の注文アイテム削除フックに何が起きたのか

WooCommerce 11.0の注文アイテム削除フックに何が起きたのか

WooCommerceのコアクラス WC_Abstract_Order には、注文アイテムをまとめて削除する remove_order_items() メソッドがある。このメソッドは、チェックアウト時に注文内容を再構築する場面などで内部的に呼ばれる。

10.9系以前では、remove_order_items() が呼ばれるとすぐにデータベースから該当のアイテム行が削除され、その直後に woocommerce_removed_order_items アクションが発火していた。いわば「削除してからお知らせ」の流れだ。

11.0.0からは、アイテムのデータベース削除そのものは save() が呼ばれるまで引き延ばされる。そして woocommerce_removed_order_items アクションは、実際に削除がコミットされた直後の save_items() 内で発火するようになった。すぐに消さず、「保存のタイミングで消して知らせる」形へと変更されたわけだ。

WooCommerce 10.9以前と11.0.0の違い
WooCommerce 10.9以前(Before)
preフック remove_order_items()の中で発火
↓
DB削除 即座にアイテム行を削除
↓
postフック 削除完了直後に発火
※すべて同一のコールスタック内で実行される
↓
WooCommerce 11.0.0以降(After)
preフック remove_order_items()で発火(変更なし)
↓
メモリ上のみ削除 データベースにはまだ残っている
↓
save() 呼び出し ここで初めてDB削除が走る
↓
postフック 削除コミット後にsave_items()内で発火
※postフックはsave()のタイミングに移動、コールスタックが分離
■ preフック(woocommerce_remove_order_items) ■ postフック(woocommerce_removed_order_items)

この図のように、preフック(woocommerce_remove_order_items)の位置は変わっていない。変更されたのはpostフックのほうだけで、発火の場所が remove_order_items() の中から save_items() へと移動した。

なぜ削除の遅延が必要だったのか

なぜ削除の遅延が必要だったのか

変更の直接のきっかけは、チェックアウト時の注文再開フローで発生していたバグだ。WooCommerceの内部では、決済途中で何らかのエラーや中断が起きた場合、同じ注文データを使って再開を試みる仕組みがある。

10.9以前の処理は次のような流れだった。まず remove_order_items() で既存のアイテムをデータベースから削除し、その後に新しい内容を再構築して save() で保存する。ところが、削除と再構築の間に何らかの例外が発生したり、決済ゲートウェイが二重チェックアウトをトリガーしたりすると、新しいアイテムが書き込まれないまま保存処理に進んでしまうケースがあった。

その結果、合計金額は正しいのに注文明細が空になるという不整合が発生していた。管理者や店舗スタッフから見ると「注文はあるのに何を買ったのかわからない」状態で、商売上の大きな問題だ。

そこで11.0.0では、データベースからの削除を save() のタイミングまで遅延させる設計に変更された。これにより、再構築の途中で何か問題が起きても、直前の正しい注文内容がデータベース上に残っている。中断したら元のまま、成功したら新しい内容で上書きされる。再開フロー全体が原子的になるわけだ。

preフックの woocommerce_remove_order_items は引き続き remove_order_items() の先頭で同期的に発火する。postフックだけが「保存時に遅延」される形になる。両方のフックを組み合わせて使っているコードだけが影響を受ける可能性がある。

開発者が影響を受ける具体的なパターン

開発者が影響を受ける具体的なパターン

今回の変更は、あらゆる拡張機能に一律で影響するわけではない。影響を受けるかどうかは、フックの使い方によって明確に切り分けられる。

影響を受けるケース

次のようなコードが該当する。

  • woocommerce_removed_order_items にコールバックを追加し、その中で「アイテムはもうデータベースに存在しない」という前提で処理を行っている
  • woocommerce_remove_order_items(pre)と woocommerce_removed_order_items(post)のペアで一連の操作を挟み込んでいる
  • remove_order_items() が戻った直後に「データベースからアイテム行が消えている」と期待している

要するに、postフックが「同じコールスタック内ですぐ実行される」という暗黙の前提に依存しているコードは、動作が変わる可能性が高い。

影響を受けないケース

一方、次のような使い方をしている場合は問題ない。

  • 最終的な保存済みの注文状態だけを監視する目的でpostフックを使っている
  • コールバック内で、DB削除がコミットされた後の最終状態だけを参照している
  • WooCommerceコア自体にはこのフックの利用箇所はないため、標準機能への影響はゼロ

postフックは変わらず「データベース削除の完了後」に発火するため、単純に「削除が終わったことを検知したい」だけのコードはそのまま動く。

開発者が今すぐ取るべき具体的な対応

開発者が今すぐ取るべき具体的な対応

コールバックの動作確認と修正

影響を受ける可能性のあるコードを発見したら、まず次の3点を確認してほしい。

  1. remove_order_items() が戻った直後にデータベースのアイテム削除を前提にしている場合は、削除を期待する処理の前に明示的に $order->save() を呼ぶ
  2. preフックとpostフックをペアで使っている場合は、postフックのロジックを注文の保存後に実行するように再構成する
  3. 動作確認はWooCommerce 11.0.0以降の環境で必ず実施する

コールバックが単に「削除後の状態を見たい」だけなら、特に対応は不要だ。postフックは依然としてDB削除のコミット後に発火するため、観測できる最終状態に違いはない。

save() を明示的に呼ぶことの意味

11.0.0以降のバージョンでは、remove_order_items() を呼んだだけではデータベースへの変更は一切発生しない。あくまでオブジェクトの内部状態が変わるだけだ。データベースへの反映は後続の save() でまとめて行われる。

つまり、「アイテムが消えた状態の注文をデータベース上で確定させたい」のであれば、プログラムの流れの中で明示的に $order->save() を実行する必要がある。これは今回の変更を正しく扱う上で最も重要なポイントだ。

この変更がもたらす開発者体験への影響

この変更がもたらす開発者体験への影響

一見すると「動いていたコードが壊れるのか」と不安に思うかもしれないが、この変更の根底にはコードの安全性を高めるという明確な意図がある。削除と保存を分離することで、中途半端な状態に陥る可能性を根本から断ち切っている。

WooCommerceの内部設計に詳しい開発者であれば、データベース操作の遅延実行はむしろ現代的なパターンだと感じるだろう。トランザクション的な一貫性を重視する設計は、拡張機能の品質向上にもつながる。

影響範囲が限定的であることも安心材料だ。WooCommerceコア自身はこのフックを消費しておらず、実質的にはサードパーティ製のプラグインやテーマだけが該当する。大半のショップ運営者は特に意識することなくアップデートできる。

この記事のポイント

  • WooCommerce 11.0.0で woocommerce_removed_order_items フックの発火タイミングが save() 実行時へ変更された
  • preフックの woocommerce_remove_order_items は変わらず同期的に動作する
  • 変更の目的は注文再開時の行アイテム消失バグの修正で、削除処理を遅延させることで安全なフローを実現
  • postフックが「削除直後に走る」ことを前提にしたコードのみが影響を受ける可能性がある
  • remove_order_items() の直後にDB反映を期待するなら明示的に save() を呼ぶこと
WooCommerce 11.0で失敗注文の在庫が自動復元へ、変更点と対応を解説

WooCommerce 11.0で失敗注文の在庫が自動復元へ、変更点と対応を解説

WooCommerce 11.0で、注文が「失敗」ステータスに移行した際の在庫処理に変更が入った。従来、注文が在庫を減らした後に「失敗」になると在庫が戻らなかったが、今後は自動で在庫が復元されるようになる。

この変更はほとんどのストアにとっては歓迎すべき改善だが、一部のカスタムフローでは注意が必要だ。ここでは変更の具体的な内容と、開発者が取るべき対応を整理する。

具体的に何が変わったのか

具体的に何が変わったのか

この変更の核心はシンプルだ。WooCommerce 11.0以降、注文ステータスが「失敗(failed)」に移行したとき、その注文が以前に在庫を減らしていた場合、自動的に在庫が復元されるようになる。

技術的には、woocommerce_order_status_failedフックにwc_maybe_increase_stock_levels()関数が登録された。この関数は、注文が以前に在庫を減らしていたかどうかを確認した上で在庫を戻す処理を行う。

WooCommerce 11.0 より前の挙動
保留中 在庫を減らす → 失敗 → 在庫は戻らない
保留中 在庫を減らす → キャンセル → 在庫が復元される
■ 失敗は在庫復元の対象外だった
↓
WooCommerce 11.0 以降の挙動
保留中 在庫を減らす → 失敗 → 在庫が復元される
保留中 在庫を減らす → キャンセル → 在庫が復元される(従来通り)
■ 失敗も在庫復元の対象に追加

上記の図で示したように、WooCommerce 11.0では「失敗(failed)」がキャンセルや保留中と同様に在庫復元の対象へと引き上げられた。

なぜこの変更が必要だったのか

この問題は非同期決済で顕在化しやすかった。たとえば、顧客が支払いを開始すると注文は「保留中(on-hold)」に移行し、その時点で在庫が減る。しかし、何らかの理由で決済が拒否され、注文が「失敗(failed)」になると、在庫だけが減ったまま戻らなかった。

結果として、実際には販売できていないにもかかわらず、在庫数だけが減った状態が続いていた。特に在庫が1点ものの商品を扱うストアでは、実害の大きい挙動だったと言える。今回の変更で、このギャップが解消される。

在庫の二重減算は起こらないのか

wc_maybe_increase_stock_levels()関数は、注文が実際に在庫を減らしたかどうかをフラグで確認してから在庫を戻す。そのため、在庫を減らしていない注文が「失敗」になった場合には在庫は変動しない。

また、管理者や拡張機能が「失敗」から再度「支払い済み」などのステータスに戻した場合、WooCommerceは以前の履歴を参照して二重に在庫を減らすことはないよう設計されている。

この変更はチェックアウト時の在庫予約機能には影響しない。あくまで在庫を実際に減らした注文が対象だ。

どのようなストアや拡張機能が影響を受けるか

どのようなストアや拡張機能が影響を受けるか

大多数のストアや拡張機能にとっては、今回の変更はそのまま歓迎すべき改善だ。決済失敗時に在庫が正しく戻るようになることで、手動での在庫修正が不要になる。

しかし、一部のカスタムフローでは注意が必要だ。具体的には、「失敗(failed)」ステータスを支払い以外の目的で流用しているケースである。たとえば、配送失敗時に注文を「失敗」としてマークしつつ、商品はすでに発送済みで在庫を確保しておきたい、といったフローだ。

こうしたストアでは、WooCommerce 11.0にアップデートすると、注文が「失敗」に移行した瞬間に在庫が復元されてしまい、意図しない在庫の増加が発生する。

開発者が取るべき対応

開発者が取るべき対応

基本的には対応不要

まず前提として、決済の失敗にのみ「失敗」ステータスを使っているストアや拡張機能では、何も対応する必要はない。アップデート後、自動的に在庫が正しく処理される。

意図的に在庫を減らしたままにしたい場合

もし拡張機能やストアが「失敗」ステータスを支払い以外の目的で使用しており、在庫を減らしたままにしておく必要があるなら、以下のコードで新しい在庫復元フックを削除すればよい。

remove_action( 'woocommerce_order_status_failed', 'wc_maybe_increase_stock_levels' );

ただし、これはあくまで「旧来の挙動を維持する明確な理由がある場合」に限るべきだ。ほとんどのストアでは、在庫が自動で復元される新しい挙動のほうが望ましい。

アップデート前のテスト事項

アップデートを配信する前に、以下の項目を実環境に近いステージング環境でテストすることを強く推奨する。

  • 「保留中」→「失敗」のフローで在庫が正しく復元されること
  • 「失敗」→「処理中」→「完了」のフローで在庫が二重に減算されないこと
  • カスタムフローで「失敗」ステータスを使っている場合、在庫数と注文メモが意図した通りになっていること

特に、非同期決済を利用しているストアでは、「保留中」で在庫が減った後、決済拒否で「失敗」に移行した際の挙動を重点的に確認しておくと安心できる。

この記事のポイント

  • WooCommerce 11.0では、注文が「失敗(failed)」に移行した際に在庫が自動復元される
  • 従来は「キャンセル」「保留中」のみが復元対象で、「失敗」は対象外だった
  • ほとんどのストアは対応不要で、むしろ在庫管理が正確になるメリットがある
  • 「失敗」ステータスを支払い以外で流用しているストアは、フック削除で旧来の挙動に戻せる
  • アップデート前には必ずステージング環境で在庫の動きをテストすること
WordPress 7.0最新情報!開発者向けアップデートとAI連携機能の全容

WordPress 7.0最新情報!開発者向けアップデートとAI連携機能の全容

WordPress 7.0のリリースサイクルに大きな動きがあった。当初の予定を変更し、リアルタイム共同編集(RTC)の基盤を強化するためにスケジュールが延長されたのだ。

2026年3月31日の発表によると、パフォーマンス上の課題を解決するためにアーキテクチャの根本的な見直しが必要になったという。これは数百万のサイトに影響を与える重要な決断だ。

本記事では、WordPress 7.0で導入される革新的なAI連携機能や、開発者が知っておくべきシステム要件の変更、そして進化したエディタの最新機能について詳しく解説する。

WordPress 7.0のリリーススケジュールとシステム要件の変更

WordPress 7.0のリリーススケジュールとシステム要件の変更

WordPress 7.0のリリースに向けた開発は、現在一時的な調整局面にある。リリース候補(RC)版から再びベータ版の状態へ戻るという、異例の事態となっているのだ。

プレリリース版の更新は4月17日まで一時停止される。新しい正式なスケジュールは4月22日までに発表される予定だ。この延期は、目玉機能であるリアルタイム共同編集の品質を担保するための前向きな判断とされている。

PHP 7.4以上が必須要件に

システム要件についても重要な変更がある。WordPress 7.0からは、PHP 7.2および7.3のサポートが完全に終了する。これにより、動作に必要な最低バージョンはPHP 7.4へと引き上げられる。

開発チームはPHP 8.2以降の使用を強く推奨している。古い環境で運用を続けているサイト管理者は、アップデートが配信される前にサーバー環境の更新を済ませておく必要があるだろう。これはセキュリティとパフォーマンスの両面で不可欠な対応だ。

開発スケジュール延期の背景

スケジュールの延長が必要になった最大の理由は、リアルタイム共同編集(RTC)のデータ保存方式だ。現在の実装では、データの同期に特定の投稿タイプを使用しているが、これがキャッシュの効率を著しく低下させることが判明した。

この問題を解決するため、コラボレーションデータ専用のデータベーステーブルを新設する作業が進められている。大規模なサイトや同時編集が多い環境でも、安定した動作を実現するための基盤作りが優先された形だ。

リアルタイム共同編集(RTC)の進化と開発者への影響

リアルタイム共同編集(RTC)の進化と開発者への影響

WordPress 7.0の看板機能であるリアルタイム共同編集は、複数のユーザーが同じ投稿を同時に編集できる仕組みだ。これには「Yjs」という高度なデータ同期エンジンが採用されている。

Yjsは「CRDT(競合解消共有データ型)」と呼ばれるアルゴリズムの一種だ。これにより、異なるユーザーによる編集が衝突することなく、スムーズに統合される。通信方式には、多くのホスティング環境で動作するHTTPポーリングが標準で選ばれた。

他ユーザーの選択範囲が可視化

最新のアップデートでは、他の編集者がどのテキストを選択しているかがリアルタイムで表示されるようになった。これまではカーソルの位置のみが表示されていたが、選択範囲も色付きでハイライトされる。

この挙動はGoogleドキュメントなどの共同編集ツールに近い体験を提供する。また、編集者のアバター表示が刷新され、接続が不安定な際の切断判定も改善されるなど、ユーザーインターフェースの安定性が向上している。

クラシックなメタボックスの制限

プラグイン開発者にとって注意すべき点は、従来の add_meta_box() を使ったメタボックスが残っている投稿では、共同編集モードが自動的に無効化されることだ。

共同編集機能を活用するためには、メタボックスをブロックエディタのサイドバーコンポーネントへ移行する必要がある。具体的には register_post_meta() と PluginSidebar コンポーネントを組み合わせる手法が推奨されている。既存プラグインの対応が急務となるだろう。

標準AI機能「AI Client」と「Connectors API」の導入

標準AI機能「AI Client」と「Connectors API」の導入

WordPress 7.0では、AIサービスとの連携を標準化するための新しいAPI群が導入される。これにより、WordPress本体やプラグインがAI機能をより簡単に利用できるようになる。

これまでは各プラグインが個別にOpenAIやGoogleのAPIを実装していた。新機能の「WP AI Client」は、これらの外部サービスとの通信を抽象化するライブラリだ。開発者は特定のプロバイダーに依存しないコードを書くことが可能になる。

Connectors APIによる柔軟なプロバイダー選択

AIの接続情報を一括管理するのが「Connectors API」だ。管理画面に新設される「Connectors」ページから、サイトで使用するAIプロバイダーを設定できるようになる。これは、AIの資格情報(APIキーなど)を安全に保存するためのプラットフォーム基盤だ。

OpenAI、Google、Anthropic向けの公式プロバイダープラグインが用意されるほか、OpenRouterやOllamaといったコミュニティ製の接続ツールも登場している。サイト管理者は、用途に応じて好みのAIモデルを自由に切り替えられるようになる。

クライアントサイドAbilities APIの追加

権限管理の仕組みも進化する。WordPress 6.9でPHP側に導入された「Abilities API」のJavaScript版が7.0で搭載される。これは、ブラウザ上で動作するスクリプトが、現在のユーザーにどのような操作が許可されているかを簡単に確認できる仕組みだ。

REST APIを通じてサーバー側の権限設定を自動で取得するため、フロントエンドでの複雑な権限チェックコードが不要になる。これは、ブラウザ上で動作するAIエージェントなどが、WordPressの操作を安全に行うための布石とも言える重要なアップデートだ。

ブロックエディタとデザイン機能の最新アップデート

ブロックエディタとデザイン機能の最新アップデート

エディタの使い勝手を向上させる多くの改善が盛り込まれている。特に、デザインのカスタマイズ性が大幅に強化された点が目立つ。CSSを直接書かなくても、高度なスタイリングが可能になる。

例えば、ボタンブロックの「ホバー」「フォーカス」「アクティブ」といった状態別のスタイルが、管理画面のグローバルスタイルから直接編集できるようになった。これにより、テーマ独自のCSSを追加する手間が軽減される。

ビューポート別のブロック表示制御

WordPress 7.0では、デバイスの種類(PC、タブレット、モバイル)に応じてブロックの表示・非表示を切り替える機能が拡張される。これはCSSのメディアクエリを利用して実装されている。

この機能のポイントは、DOM(HTML要素)を削除するのではなく、表示設定を制御している点だ。開発者が独自のブロックでこの機能をサポートする場合、メタデータの扱いに注意が必要だが、ユーザーにとっては直感的なレスポンシブデザインの調整が可能になる。

PC表示時 表示
PC: 表示 スマホ: 非表示
このブロックはデスクトップ環境で正常にレンダリングされる。
↓
スマホ表示時 非表示
PC: 表示 スマホ: 非表示
DOMには存在するがCSSメディアクエリで描画されない
■ 表示状態(実体あり・描画される) ▢ 非表示状態(DOMには存在するが描画されない)

このデモは、デバイス設定によってブロックがどのように見えるかを視覚化したものだ。

背景画像とグラデーションの重ね合わせ

デザイン面では、背景画像の上にグラデーションを重ねる機能も追加された。これまではカスタムCSSが必要だったが、ブロックのコントロールパネルから直接設定できるようになる。

テキストの読みやすさを確保するためのオーバーレイや、装飾的な効果をエディタ上で即座に確認できる。カバーブロックだけでなく、背景サポートを登録している全てのブロックで利用可能だ。Webデザインの表現力がさらに広がるだろう。

開発ツールとPlaygroundの劇的な進化

開発ツールとPlaygroundの劇的な進化

開発者向けのツールチェーンも大きな転換期を迎えている。特にビルドツールの高速化と、AIを活用した開発手法の導入が注目される。

新しいビルドツール @wordpress/build は、従来のwebpackとBabelのパイプラインを、esbuildベースのエンジンに置き換える。これにより、ビルド時間が劇的に短縮される。既存の @wordpress/scripts からの移行も容易に設計されている。

WordPress Playground MCPサーバーの登場

ブラウザ上でWordPressを動かす「Playground」に、MCP(Model Context Protocol)サーバー機能が追加された。これは、AIエージェントがWordPress環境を直接操作するための仕組みだ。

Claude CodeやGeminiといったAIツールと連携させることで、AIがローカルのPlaygroundインスタンスに対してファイルを書き込んだり、PHPを実行したりできるようになる。会話を通じてプラグインの雛形を作成し、その場でテストまで完了させるといった新しい開発体験が可能になる。

コマンドパレットの整理と機能追加

管理画面の操作を素早く行うためのコマンドパレットも使いやすく改良された。コマンドが論理的なグループ(セクション)に分けられ、最近使用したコマンドが上位に表示されるようになった。

プラグイン開発者が独自のコマンドを登録する際も、適切なセクションに配置されるため、ユーザーが見つけやすくなる。細かい改善だが、日々の管理作業の効率を確実に向上させるアップデートだ。

この記事のポイント

  • WordPress 7.0は共同編集機能の改善のためリリースが延期され、4月22日までに新日程が発表される。
  • PHP 7.4以上が必須要件となり、古い環境のサイトはアップデート前にサーバー更新が必要。
  • 標準AI機能「AI Client」と「Connectors API」により、外部AIサービスとの連携が容易になる。
  • リアルタイム共同編集(RTC)では他ユーザーの選択範囲が可視化され、より直感的な操作が可能。
  • ボタンの状態別スタイルや、デバイス別の表示制御がグローバルスタイルから設定可能になった。
  • WordPress PlaygroundがAIエージェントと連携し、AIによるサイト構築やテストが加速する。