我想通过插件创建自定义端点,但它不适用于匿名用户。如何使其可供公众访问?如果不可能,那么如何通过命令行登录?
我已经遵循了这个例子。将以下代码添加到“hello.php”插件中。
function prefix_get_endpoint_phrase() {
return rest_ensure_response('Hello World, this is the WordPress REST API');
}
function prefix_register_example_routes() {
register_rest_route('hello-world/v1', '/phrase', [
'methods' => WP_REST_Server::READABLE,
'callback' => 'prefix_get_endpoint_phrase',
'permission_callback' => '__return_true',
]);
}
add_action('rest_api_init','prefix_register_example_routes');
我输入
https://example.com/wordpress/wp-json/hello-world/v1/phrase
,它对于登录用户来说工作正常。匿名用户禁用 401 REST API。然而,https://example.com/wordpress/wp-json
对于匿名者来说效果很好。我正在干净的 WordPress 6.2.2 安装上测试它(永久链接已设置为帖子名称)。
还尝试通过命令行访问它。我已按照这些说明(创建应用程序密码,使用curl模板):
curl --user "username:xxxx xxxx xxxx xxxx xxxx xxxx" https://example.com/wordpress/wp-json/hello-world/v1/phrase
结果是 403 Forbidden。
为了向匿名用户公开您的路线,您必须删除
permission_callback
,尝试以下代码
function prefix_get_endpoint_phrase() {
return rest_ensure_response('Hello World, this is the WordPress REST API');
}
function prefix_register_example_routes() {
register_rest_route('hello-world/v1', '/phrase', [
'methods' => WP_REST_Server::READABLE,
'callback' => 'prefix_get_endpoint_phrase',
//'permission_callback' => '__return_true',//remove it
]);
}
add_action('rest_api_init','prefix_register_example_routes');