在WordPress中创建自定义REST API端点是一个相对直接的过程,可以通过以下几个步骤来完成:
步骤 1:设置钩子
首先,你需要使用 rest_api_init
钩子来注册你的自定义端点。这个钩子在REST API被初始化时触发。
步骤 2:注册路由
在你的插件或主题的 functions.php
文件中,你可以使用 register_rest_route
函数来注册一个新的路由。
步骤 3:定义回调函数
定义一个回调函数来处理传入的请求,并返回相应的响应。
以下是一个简单的例子,展示了如何创建一个名为 /myplugin/v1/hello-world
的自定义端点:
function myplugin_register_routes() {
// 注册一个新的路由
register_rest_route('myplugin/v1', '/hello-world', array(
'methods' => 'GET', // 允许的HTTP方法
'callback' => 'myplugin_hello_world', // 当路由被访问时调用的函数
));
}
add_action('rest_api_init', 'myplugin_register_routes');
function myplugin_hello_world($request) {
// 返回一个简单的响应
return new WP_REST_Response('Hello, World!', 200);
}
在这个例子中:
myplugin/v1
是命名空间,通常是你插件的名称和版本号。/hello-world
是路由的路径。methods
定义了允许的HTTP方法(GET, POST, PUT, DELETE等)。callback
是当端点被访问时调用的函数。
步骤 4:测试端点
一旦你将代码添加到 functions.php
文件并保存,你可以通过访问以下URL来测试你的端点:
http://yourwordpresssite.com/wp-json/myplugin/v1/hello-world
将 yourwordpresssite.com
替换为你的WordPress站点的URL。
扩展端点功能
你可以通过以下方式扩展你的端点:
- 添加参数验证:使用
register_rest_route
的args
参数来定义期望的输入参数和验证规则。 - 支持不同的HTTP方法:在
methods
参数中添加多个方法,如'methods' => 'GET|POST'
。 - 返回更复杂的响应:使用
WP_REST_Response
类来构建响应,并设置状态码、头部和主体。
以下是一个带有参数验证的例子:
function myplugin_register_routes() {
register_rest_route('myplugin/v1', '/hello-world', array(
'methods' => 'GET',
'callback' => 'myplugin_hello_world',
'args' => array(
'name' => array(
'required' => true,
'validate_callback' => function($param, $request, $key) {
return is_string($param);
}
),
),
));
}
add_action('rest_api_init', 'myplugin_register_routes');
function myplugin_hello_world($request) {
$name = $request->get_param('name');
return new WP_REST_Response("Hello, $name!", 200);
}
在这个例子中,端点现在接受一个名为 name
的参数,并且这个参数是必须的。如果访问端点时没有提供 name
参数,将会返回一个错误。