Code PHP

WP REST APIでカスタムエンドポイントを実装する方法

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"}]

-Code, PHP

© 2024 トンボのようにまっすぐ進んでいたい Powered by AFFINGER5