rest_endpoints
は、 WordPressのREST APIに新しいエンドポイントを追加したり、既存のエンドポイントをカスタマイズする ために使用されます。REST APIを使うことで、外部アプリケーションやフロントエンドと連携し、データを取得・操作するための仕組みを提供します。
目次
機能の説明
- REST APIのエンドポイントの一覧を取得 するための内部フィルターフックです。
- REST APIのリクエストに応じて、特定のエンドポイントを 追加・削除・変更 するための処理を記述できます。
- REST API経由でカスタムデータの取得や、新しい機能を実装したい場合に利用します。
シンプルなコード例
add_action('rest_api_init', function () {
register_rest_route('custom/v1', '/example/', array(
'methods' => 'GET',
'callback' => 'my_custom_callback',
));
});
rest_api_init
アクションフック 内でregister_rest_route()
を使い、カスタムエンドポイントを作成します。- GET/POST/PUT/DELETE など、HTTPリクエストメソッドに応じたコールバックを指定できます。
rest_ensure_response()
で適切なレスポンス形式を返します。
使用例
add_action('rest_api_init', function () {
register_rest_route('custom/v1', '/data/', array(
'methods' => 'GET',
'callback' => 'fetch_custom_data',
'permission_callback' => '__return_true',
));
});
function fetch_custom_data() {
$data = array(
'name' => 'John Doe',
'email' => 'john@example.com',
);
return rest_ensure_response($data);
}
register_rest_route()
で、custom/v1/data/
というエンドポイントを登録します。permission_callback
に__return_true
を指定することで、 認証なしでアクセスを許可 しています。fetch_custom_data()
でJSON形式のデータを返します。
一緒に使うことが多い関連タグ
register_rest_route()
REST APIに 新しいエンドポイントを追加 します。
register_rest_route('my_namespace/v1', '/items/', array(
'methods' => 'POST',
'callback' => 'post_item_data',
));
rest_ensure_response()
コールバック関数からの戻り値を、 REST APIのレスポンス形式に変換 します。
function post_item_data($request) {
$params = $request->get_json_params();
return rest_ensure_response(array('status' => 'success', 'data' => $params));
}
追加情報を取得したい場合
get_json_params()
でリクエストデータを取得する
function post_item_data($request) {
$params = $request->get_json_params();
return rest_ensure_response($params);
}
get_json_params()
で、POSTリクエストの JSONデータ を取得します。
出力できる情報
- name: ユーザーの名前
- email: ユーザーのメールアドレス
- status: 成功・失敗のステータス
想定されるトラブル
エンドポイントが表示されない
REST APIが無効化されているか、rest_api_init
アクションが適切に呼び出されていない。
解決方法
- プラグインやテーマで
rest_api_init
フックが適切に登録されていることを確認します。 - パーマリンクの設定をリセットしてみてください。
認証エラーが発生する
permission_callback
が適切に設定されていない。
解決方法
必要に応じて permission_callback
でユーザーの権限チェックを追加します。
Q&A
まとめ
rest_endpoints
は、WordPressのREST APIの拡張や管理に不可欠なフィルターフックです。
register_rest_route()
と組み合わせて、カスタムエンドポイントを簡単に追加でき、外部アプリケーションとのデータ通信を容易にします。REST APIは、WordPressを ヘッドレスCMS として利用する際に特に重要な機能です。
カスタマイズ例
1