Wordpress Rest APIカスタムエンドポイントオプションパラメータ


15

register_rest_route()URLでオプションのパラメーターを使用することは可能ですか?

ルートが次のように登録されているとしましょう:

register_rest_route( 'api', '/animals/(?P<id>\d+)', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals',
   'args' => [
        'id'
    ],
] );

それはのようなURLにAPI呼び出しを実行できるようになりました/ WP-JSON / API /動物/ 15、だけでなく、のようなルートをキャッチするために、オプションとしてのparamを宣言するための方法がある/ WP-JSON / API /動物/で

私も以下のようにルートを宣言しようとしましたが、成功しませんでした:

/animals/(?P<id>\d+)?

パラメータなしで別のルートを宣言したり、GETパラメータを利用したりできますが、これを行う方法はすでにregister_rest_route()

あなたの提案をありがとう。

回答:


18

ルートの正規表現の名前付きパラメーターをオプションのキャプチャグループに配置する必要があります。

register_rest_route( 'api', '/animals(?:/(?P<id>\d+))?', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals',
   'args' => [
        'id'
    ],
] );

2番目のパラメーターは単なる正規表現であるため、通常の正規表現ロジックを使用してより複雑にすることができます


3

1つのでそれを行う方法があるかもしれないregister_rest_route関数呼び出し、私はそれを行う方法がわからない、それはです理想的であること。ただし、register_rest_routeフックされたメソッドで関数呼び出しを複製すると、必要な処理を実行できます。

register_rest_route( 'api', '/animals/', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals'
] );

register_rest_route( 'api', '/animals/(?P<id>\d+)', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals',
   'args' => [
        'id'
    ],
] );

各ケースを処理する条件が必要なget_animalsメソッドです。idargが設定されている場合の1つで、フォールバックは$_GET変数をチェックします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.