Я создаю настраиваемую конечную точку REST API и хотел бы иметь возможность отображать представление для нескольких сообщений или отдельное представление сообщения, если указан идентификатор. Я также хотел бы разрешить дополнительные параметры запроса ?
в обоих случаях.
Примеры запросов:
/posts // no query parameters, use defaults
/posts?fields=id,title,thumbnail&thumbnail_size=medium
/posts/123/?fields=id,title,thumbnail&thumbnail_size=large
/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
).
Я считаю, что проблема в моем регулярном выражении, но я не могу понять, как ее исправить.