如何将Wordpress REST API自定义端点公开?

问题描述 投票:0回答:1

我想通过插件创建自定义端点,但它不适用于匿名用户。如何使其可供公众访问?如果不可能,那么如何通过命令行登录?

我已经遵循了这个例子。将以下代码添加到“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。

php wordpress-rest-api wordpress-plugin-creation
1个回答
0
投票

为了向匿名用户公开您的路线,您必须删除

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');
© www.soinside.com 2019 - 2024. All rights reserved.