Конечные точки WordPress REST API - как разрешить использование нескольких и дополнительных идентификаторов на одной конечной точке? - PullRequest
1 голос
/ 19 июня 2020

Я создаю настраиваемую конечную точку REST API и хотел бы иметь возможность отображать представление для нескольких сообщений или отдельное представление сообщения, если указан идентификатор. Я также хотел бы разрешить дополнительные параметры запроса ? в обоих случаях.

Примеры запросов:

  1. /posts // no query parameters, use defaults
  2. /posts?fields=id,title,thumbnail&thumbnail_size=medium
  3. /posts/123/?fields=id,title,thumbnail&thumbnail_size=large
  4. /posts/123 // nothing specified again!

Вот код, который у меня сейчас есть:

register_rest_route('wp-api', '/posts/(?P<id>[^/]+)?', [
    'methods' => [WP_REST_Server::READABLE, WP_REST_Server::CREATABLE],
    'callback' => function ($request) {
        return MyClass::wp_api_get_posts($request);
    },
]);

Этот код работает для вариантов использования 3 и 4, но из-за / в остальном маршруте варианты использования 1 и 2 не работают, и я просто получаю ошибку rest_no_route (No route was found matching the URL and request method).

Я считаю, что проблема в моем регулярном выражении, но я не могу понять, как ее исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...