在WordPress中创建自定义REST API端点可以通过以下几个步骤来完成:
1. 添加钩子到 rest_api_init
动作
WordPress REST API 提供了一个 rest_api_init
动作钩子,你可以在该钩子上注册新的路由和端点。
2. 使用 register_rest_route
函数注册路由
register_rest_route
函数用于注册新的API端点。以下是该函数的基本用法:
register_rest_route( $namespace, $route, $args );
$namespace
: API命名空间,通常是一个URL前缀,用于分组相关的端点。$route
: API端点的路径。$args
: 一个数组,包含了端点的详细信息,如HTTP方法、回调函数等。
3. 创建回调函数处理请求
在 $args
数组中,你需要定义一个回调函数来处理API请求。
以下是一个创建自定义端点的完整示例:
function my_custom_endpoints() {
// 注册一个新的API端点
register_rest_route( 'myplugin/v1', '/author/(?P<id>d+)', array(
'methods' => 'GET', // 允许的HTTP方法
'callback' => 'my_get_author_callback', // 当端点被请求时调用的函数
'permission_callback' => function () {
return current_user_can( 'read' ); // 权限检查
},
) );
}
add_action( 'rest_api_init', 'my_custom_endpoints' );
function my_get_author_callback( $request ) {
// 获取请求中的参数
$id = $request->get_param( 'id' );
// 根据ID获取作者信息
$author = get_user_by( 'id', $id );
if ( empty( $author ) ) {
return new WP_Error( 'no_author', '作者不存在', array( 'status' => 404 ) );
}
// 返回作者信息
return array(
'id' => $author->ID,
'name' => $author->display_name,
'username' => $author->user_login,
);
}
在这个例子中,我们创建了一个名为 myplugin/v1/author/{id}
的端点,它接受一个数字ID作为参数,并返回对应的作者信息。
4. 使用自定义端点
一旦你注册了自定义端点,你就可以通过以下URL访问它:
https://yourwordpressdomain.com/wp-json/myplugin/v1/author/1
这里的 1
是作者ID的示例。
注意事项
- 确保你的回调函数能够处理不同的HTTP方法(GET, POST, PUT, DELETE等),并根据需要返回适当的数据或错误。
- 使用
permission_callback
来确保只有有权限的用户可以访问端点。 - 对于复杂的逻辑和数据结构,你可能需要使用更高级的查询和数据处理技术。
通过以上步骤,你可以为WordPress创建强大的自定义REST API端点。