register_rest_route не передает мне параметры функции обратного вызова

#wordpress #rest #routes

#wordpress #остальное #маршруты

Вопрос:

У меня есть класс для регистрации и выполнения моих пользовательских конечных точек.

Если я зарегистрирую свои конечные точки вне класса, я могу получить параметры своей конечной точки в своей функции обратного вызова. Но внутри класса параметры не передаются

Здесь код:

 class MYPLUGIN_RestAPI {
    public function __construct() {
        add_action('rest_api_init', array($this, register_routes));
    }

    public function register_routes (){
        register_rest_route (
            'myplugin/v1',
            '/book/(?P<id>[a-z0-9 .-] )',
            array(
                'methods' => 'GET',
                'callback' => array($this, "endpoint_book_cb")
            )
        );
    }

    public function endpoint_book_cb($data){
        $result['code'] = 200;
        $result['message'] = "Horrayyy!!!!!!!";
        $result['data'] = $data;

        return $result;
    }
}

new MYPLUGIN_RestAPI();
  

Вот что я получаю, когда запускаю эту конечную точку

 {"code":200,"message":"Horrayyy!!!!!!!","data":{}}
  

Есть идеи, почему?

Комментарии:

1. попробуйте использовать общедоступную функцию __construct($data — null)… внутри вы можете проверить, имеет ли значение $data значение null, и делать что угодно оттуда

2. То же самое. {«code»:200,»message»:»Ужасный!!!!!!!»,» данные»:{}}

Ответ №1:

Найдено решение:

   public function wpfm_endpoints_cb(WP_REST_Request $request){
        $result['code'] = 200;
        $result['message'] = "Horrayyy!!!!!!!";
        $result['data'] = $request->get_params();

        return $result;
  }
  

Комментарии:

1. Для меня ошибка заключалась в том, что я определил метод обратного вызова таким, каким private он должен быть public .