WP REST APIは、WordPressにAPIのカスタムエンドポイントを追加することのできる機能です。
WordPressにREST APIカスタムエンドポイントを追加する
WordPressの組込み関数register_rest_routeを使います。
ここでは、例としてGET /api/v1/usersを追加してみます。
function add_custom_endpoint()
{
register_rest_route(
'api/v1',
'users',
[
'methods' => WP_REST_Server::READABLE,
'permission_callback' => '__return_true',
'callback' => 'fetch_test_data'
]
);
}
function fetch_test_data(): WP_REST_Response
{
return new WP_REST_Response([
['id' => 1, 'name' => 'taro'],
['id' => 2, 'name' => 'jiro'],
['id' => 3, 'name' => 'saburo']
]);
}
add_action('rest_api_init', 'add_custom_endpoint');
第一引数にAPIの名前空間、第二引数にリソース名を設定します。
カスタムエンドポイント追加の処理をrest_api_initのアクションフックに追加します。
戻り値はjson形式にするためにWP_REST_Responseクラスのオブジェクトとして返却しています。
methodsの指定
methodsの指定にWP_REST_Serverクラスのstatic変数を渡していますが、’GET’など文字列を直接渡しても大丈夫です。
method名 | WP_REST_Serverクラス変数 |
---|---|
GET | WP_REST_Server::READBLE |
POST | WP_REST_Server::CREATABLE |
POST,PUT,PATCH | WP_REST_Server::EDITABLE |
DELETE | WP_REST_Server::DELETABLE |
GET,POST,PUT,PATCH,DELETE | WP_REST_Server::ALLMETHODS |
callback関数の指定
callback関数にエンドポイントの処理内容を記述し、関数名を渡します。
今回は固定値を返すように実装しています。
REST APIエンドポイントの動作確認
作成したAPIエンドポイントをcurlコマンドで叩いてみます。
エンドポイントのURLは[ドメイン名]/wp-json/[名前空間]/[リソース名]となります。
$ curl -X GET https://example.com/wp-json/api/v1/test
[{"id":1,"name":"taro"},{"id":2,"name":"jiro"},{"id":3,"name":"saburo"}]