Wordpress Rest API 사용자 정의 엔드 포인트 선택적 매개 변수


15

register_rest_route()URL에서 선택적 매개 변수와 함께 사용할 수 있습니까?

route가 이런 식으로 등록되었다고 가정 해 봅시다.

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

이제 / wp-json / api / animals / 15 와 같은 URL에서 api 호출을 수행 할 수 있지만 / wp-json / api / animals / 와 같은 경로를 잡기 위해 param을 선택 사항으로 선언하는 방법이 있습니다 .

또한 아래와 같이 경로를 선언했지만 성공하지 못했습니다.

/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'
    ],
] );

두 번째 매개 변수는 단순히 정규식이므로 일반 정규식 논리 를 사용하여 더 복잡하게 만들 수 있습니다.


3

하나와 함께 할 수있는 방법이있을 수 있습니다 register_rest_route함수 호출, 그 작업을 수행하는 방법을 모르고는 것이 이상적이다. 그러나 register_rest_routehooked 메소드에서 함수 호출을 복제 하면 원하는 작업을 수행합니다.

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 메소드는 각 케이스를 처리하는 조건을 갖기를 원할 것입니다. 경우 생성을위한 하나의 id인수가 설정되어 있고, 대체를위한 검사 $_GET변수.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.