php - Wordpress REST API - 如何创建具有空命名空间的 API 路由?
问题描述
我有一个带有路由https://example.com/wp-json/videos的 API 。这是使用JSON rest API 插件创建的,当插件停止工作时,我需要使用 WP Rest API 重新创建它。
我发现使用 WP rest API,我无法创建具有空命名空间或路由的路由,因此我只能拥有
/videos
在 api 路由中。
我怎样才能做到这一点?
我试过这段代码
function handle_routes($rest ) {
$video_api = new Video_API;
$routes = $video_api->register_routes();
foreach ($routes as $route => $data) {
$namespace = explode( '/', trim($route, '/'))[0];
$rest->register_route($namespace, $route, [
'methods' => $data[0][1],
'callback' => $data[0][0]
]);
}
}
add_action( 'rest_api_init', 'handle_routes', 10, 1);
所有参数都是正确的,但它给出了 rest_no_route 错误,因此没有注册路由。
$routes['/videos/(?P<id>\d+)'] = array(
array( array( $this, 'get_video'), WP_JSON_Server::READABLE)
);
这是发送到该方法的路由的一个示例。
解决方案
试试这个,这应该可以满足您的要求。
add_action('rest_api_init', function($rest) {
$rest->register_route('videos', '/videos', [
'methods' => 'GET',
'callback' => '' //<--your callback function for videos
]);
});
这里发生的是您直接向WP_REST_Server
对象添加一个新路由,它会创建一个带有空命名空间的路由。
推荐阅读
- node.js - 无法获取使用 Admin SDK Firebase 的用户列表
- spring - Spring Framework:javax.servlet.ServletException:Servlet [dispatcher] 的 Servlet.init() 抛出异常
- java - 如何在 Java 中获取特定于字体和大小的文本长度?
- docker - 以后的 gradle 插件中不支持 Shell 登录命令
- mysql - 如何让 golang mysql 驱动程序在 2 秒内超时 ping?
- python - 添加评论表单 Django
- php - PHP如何添加和数组到数组
- javascript - Node.js puppeteer - 从具有不同 ElementTags 的 txt 文件中获取数据
- php - Laravel 验证对象数组问题
- javascript - 递归函数没有被执行