首页 > 解决方案 > 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)
);

这是发送到该方法的路由的一个示例。

标签: phpwordpresswordpress-rest-api

解决方案


试试这个,这应该可以满足您的要求。

add_action('rest_api_init', function($rest) {
    $rest->register_route('videos', '/videos', [
        'methods'  => 'GET',
        'callback' => '' //<--your callback function for videos
    ]);
});

这里发生的是您直接向WP_REST_Server对象添加一个新路由,它会创建一个带有空命名空间的路由。


推荐阅读