source

rest_api_init 이벤트가 실행되지 않았습니다.

gigabyte 2023. 3. 20. 23:18
반응형

rest_api_init 이벤트가 실행되지 않았습니다.

wp 4.7.4에서 커스텀 플러그인을 실행하려고 합니다.아래는 간단한 플러그인입니다.

add_action( 'rest_api_init', 'register_routes');


function register_routes() {
   register_rest_route( 'taxonomy-manager/v1', '/taxonomies/(P<taxonomy_type>[a-zA-Z]+)', array(
   'methods' => 'GET',
   'callback' => 'get_or_insert'
  ) );
} 

function get_or_insert( WP_REST_Request $request ) {

   $parameters = $request->get_params();

   return $parameters;

}

내가 요청할 때wp-json엔드포인트 플러그인 루트가 표시되지 않습니다.플러그인이 성공적으로 활성화되었습니다.제가 뭘 놓쳤나요?위의 플러그인(또는 유사한 플러그인 기준)을 사용합니까?rest_api_initevent)는 다른 사람을 위해 작동합니까?감사해요.

해결책이 있습니다.wp-json을 당신의 URL과 함께 사용해야 합니다.예를 들어 https://yourdomain.com/wp-json/namespace/and-so-on/

그럼 될 거야.URL에서 wp-json이 누락되었습니다.

아래 체크리스트를 참조해 주세요.
1. 퍼머링크를 예쁜 퍼머링크로 바꾸고 체크합니다.
2. .htacess 파일을 확인합니다(wp에서 다시 쓸 수 있는 permalink 구조를 저장하면 쓸 수 있어야 합니다).
3. Auth를 체크합니다.
4. 아래 커스텀 엔드포인트 작성 방법을 확인합니다.

add_action( 'rest_api_init', function () {
  register_rest_route( 'myplugin/v1', '/author/(?P<id>\d+)', array(
    'methods' => 'GET',
    'callback' => 'my_awesome_func',
  ) );
} );

REF : https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/

제 경우 콜백은 실제로는 개인 방식입니다.모든 것을 작동시키기 위해 퍼블릭 방식으로 변경해야 했습니다.

class Example {
    function __construct() {
        add_action( 'rest_api_init', [ $this, 'example_method' ] );
    }

    public function example_method() {
        /* This will not work if the method is private! */
        /* ... */
    }
}
new Example();

어떤 설치에서는 프라이빗 메서드로 인해 스택트레이스에 오류가 발생했지만 다른 설치에서는 프라이빗 메서드가 호출되지 않아 오류가 생성되지 않았습니다.왜 한쪽 기계만 반응하고 다른 쪽 기계는 반응하지 않았는지 아직도 잘 모르겠어요.WP_DEBUG그리고.WP_DEBUG_LOGtrue로 설정합니다.

최신 빌드를 사용하면 rest_api_init 액션이 실행되지 않습니다.플러그인에서 이 코드처럼 보입니다.php는 항상 비어 있고 반환되며 rest_api_init 액션을 실행할 수 없습니다.

if ( empty( $GLOBALS['wp']->query_vars['rest_route'] ) ) {
    return;
}

플러그인이 활성화되어 있는지 확인하십시오. 활성화되어 있지 않으면 실행되지 않습니다.

언급URL : https://stackoverflow.com/questions/44204307/rest-api-init-event-not-fired

반응형