wp-rest-api について
WordPress REST API を開発・デバッグするためのワークフロースキルです。ルート設計、検証、レスポンス、認証、動作確認を扱います。
主な機能
- 01ルートとエンドポイントの設計
- 02権限と認証のガイダンス
- 03引数スキーマと検証
- 04カスタムフィールド、メタデータ、リンク
- 05ディスカバリーとページネーションの確認
- 06エラー診断と動作確認
活用シーン
- 01カスタム REST エンドポイントの追加
- 02投稿タイプやタクソノミーの REST 公開
- 03REST 権限エラーのデバッグ
- 04検証済みフィールドのレスポンスへの追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ wordpress/ agent-skills --skill wp-rest-apiインストール後、Claude Code で/wp-rest-apiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/authentication.mdcustom-content-types.mddiscovery-and-params.mdresponses-and-fields.mdroutes-and-endpoints.mdschema.md詳細
WP REST API
使用するタイミング
次の作業が必要な場合に、このスキルを使用します。
- REST ルート/エンドポイントを作成または更新する
- 401/403/404 エラーや、権限/nonce の問題をデバッグする
- REST レスポンスにカスタムフィールド/メタデータを追加する
- REST 経由でカスタム投稿タイプやタクソノミーを公開する
- スキーマと引数のバリデーションを実装する
- レスポンスのリンク/埋め込み/ページネーションを調整する
必要な入力
- リポジトリのルートと対象のプラグイン/テーマ/mu-plugin(エントリーポイントへのパス)。
- 希望する名前空間とバージョン(例:
my-plugin/v1)、およびルート。 - 認証方式(Cookie + nonce、アプリケーションパスワード、認証プラグインのいずれか)。
- 対象とする WordPress のバージョン制約(7.0 未満の場合は明記してください)。
手順
0) REST の使用状況を調査して場所を特定する
- 調査を実行します。
node skills/wp-project-triage/scripts/detect_wp_project.mjs
- 既存の REST の使用箇所を検索します。
register_rest_routeWP_REST_Controllerrest_api_initshow_in_rest、rest_base、rest_controller_class
サイト全体のリポジトリの場合は、コードを変更する前に対象のプラグイン/テーマを選択します。
1) 適切な方法を選ぶ
- CPT/タクソノミーを
wp/v2で公開する場合:- 必要に応じて、
show_in_rest => trueとrest_baseを使用します。 - 必要に応じて、
rest_controller_classを指定します。 references/custom-content-types.mdを読みます。
- 必要に応じて、
- カスタムエンドポイントの場合:
rest_api_initでregister_rest_route()を使用します。- 複雑な処理には、
WP_REST_Controllerのサブクラスであるコントローラークラスを優先します。 references/routes-and-endpoints.mdとreferences/schema.mdを読みます。
2) ルートを安全に登録する(名前空間、メソッド、権限)
- 一意の名前空間
vendor/v1を使用します。コアでない限り、wp/*は避けてください。 - 必ず
permission_callbackを指定します(公開エンドポイントには__return_trueを使用します)。 WP_REST_Server::READABLE/CREATABLE/EDITABLE/DELETABLE定数を使用します。rest_ensure_response()またはWP_REST_Responseを使ってデータを返します。- 明示的な
statusを指定したWP_Errorを使ってエラーを返します。
references/routes-and-endpoints.md を読みます。
3) リクエスト引数を検証/サニタイズする
type、default、required、validate_callback、sanitize_callbackを指定してargsを定義します。- JSON Schema による検証を優先し、その後
rest_validate_value_from_schema、続いてrest_sanitize_value_from_schemaを使用します。 - エンドポイント内で
$_GET/$_POSTを直接読み取らないでください。WP_REST_Requestを使用します。
references/schema.md を読みます。
4) レスポンス、フィールド、リンク
- デフォルトのエンドポイントからコアフィールドを削除しないでください。フィールドを追加してください。
- 計算フィールドには
register_rest_fieldを、メタデータにはshow_in_restを指定したregister_metaを使用します。 object/array型のメタデータには、show_in_rest.schemaでスキーマを定義します。- フィルターされていない投稿コンテンツ(例:HTML を挿入する ToC プラグイン)が必要な場合は、
?context=editを指定してcontent.rawにアクセスします(認証が必要です)。レスポンスを小さく保つには、_fields=content.rawも併せて指定します。 WP_REST_Response::add_link()を使って、関連リソースへのリンクを追加します。
references/responses-and-fields.md を読みます。
5) 認証と認可
- wp-admin/JS の場合:Cookie 認証 +
X-WP-Nonce(アクションwp_rest)。 - 外部クライアントの場合:アプリケーションパスワード(Basic 認証)または認証プラグイン。
permission_callbackでは、単なる「ログイン済み」の確認ではなく、ケイパビリティを確認します(認可)。
references/authentication.md を読みます。
6) クライアント向けの動作(ディスカバリー、ページネーション、埋め込み)
- ディスカバリーが機能するようにします(
Linkヘッダーまたは<link rel="https://api.w.org/">)。 _fields、_embed、_method、_envelope、ページネーションヘッダーをサポートします。per_pageの上限は 100 です。
references/discovery-and-params.md を読みます。
検証
/wp-json/インデックスに、指定した名前空間が含まれている。- ルートへの
OPTIONSリクエストで、スキーマが返される(指定した場合)。 - エンドポイントが想定どおりのデータを返し、権限エラーが適切に 401/403 を返す。
show_in_restがtrueの場合、CPT/タクソノミーのルートがwp/v2に表示される。- リポジトリの lint/テストと、必要な PHP/JS のビルド手順を実行する。
エラーの種類とデバッグ
- 404:
rest_api_initが実行されない、ルートのタイプミス、またはパーマリンクが無効です(?rest_route=を使用してください)。 - 401/403:nonce/認証がない、または
permission_callbackが厳しすぎます。 permission_callbackがない場合の_doing_it_wrong:追加してください(公開する場合は__return_trueを使用してください)。- 無効なパラメーター:
argsスキーマまたは検証コールバックがない、あるいは正しくありません。 - フィールドが表示されない:
show_in_restが false、メタが登録されていない、または CPT がcustom-fieldsをサポートしていません。
エスカレーション
バージョンサポートや動作が不明な場合は、パターンを独自に考案する前に、REST API ハンドブックとコアドキュメントを確認してください。
コメント
Markdown 対応