PERMISSION_CALLBACK无效

时间:2020-12-02 作者:James Wagoner

WP版本为5.5.3

我在管理仪表板页面中使用的插件中设置了3个API路由。一条路线将被使用”;公开发布;。

我有两个非常奇怪的问题:

我的3条以管理为中心的路由未指定permission_callback. 我应该得到通知,但我没有,当文档和WP核心功能说它将抛出doing_it_wrong 错误\'permission_callback\' => \'__return_true\' 设置我收到rest_not_logged_in 错误代码

class My_Plugin
{
    public function __construct()
    {
        add_action( \'rest_api_init\', [ &$this, \'register_routes\' ] );
    }
    
    public function register_routes(): void
    {
        register_rest_route(\'my-api-route\', \'/uri\', [
            \'methods\' => WP_REST_Server::READABLE,
            \'callback\' => [&$this, \'api_get_available_stuff\'],
        ]);

        register_rest_route(\'my-api-route\', "/uri/(?P<param>[a-zA-Z0-9-]+)", [
            \'methods\' => WP_REST_Server::READABLE,
            \'callback\' => [&$this, \'api_get_specific_stuff\'],
        ]);

        register_rest_route(\'my-api-route\', "/uri/(?P<param>[0-9-]+)", [
            \'methods\' => WP_REST_Server::EDITABLE,
            \'callback\' => [&$this, \'api_update_specific_stuff\'],
        ]);

        register_rest_route(\'my-api-route\', "/uri/(?P<param>[a-zA-Z0-9-]+)/load-more", [
            \'methods\' => WP_REST_Server::READABLE,
            \'callback\' => [&$this, \'api_load_more_stuff\'],
            \'permission_callback\' => \'__return_true\',
        ]);
    }
}
// header approach
$.ajax({
  url: \'/wp-json/my-api-route/uri/param/load-more\',
  method: \'GET\',
  headers: {
    \'X-WP-Nonce\': \'<?php echo wp_create_nonce(\'wp_rest\'); ?>\'
  },
  data: {
    \'max_items\': 5,
    \'offset\': 5 * current_count,
  },
})

// _wpnonce approach
$.ajax({
  url: \'/wp-json/my-api-route/uri/param/load-more\',
  method: \'GET\',
  data: {
    \'_wpnonce\': \'<?php echo wp_create_nonce(\'wp_rest\'); ?>\',
    \'max_items\': 5,
    \'offset\': 5 * current_count,
  },
})
我唯一的结论可能是,尽管看到;版本5.5.3“;在WP Admin的下角,我可能不在5.5.3上。

1 个回复
SO网友:Timothy Jacobs

你确定_doing_it_wrong 没有发出通知?您不会在页面上看到明显的通知输出,因为这会破坏JSON响应。但是如果您查看响应的标题,您应该会看到X-WP-DoingItWrong 标题。

如果您使用这样的插件来记录开发人员的注意事项,它也应该出现:https://wordpress.org/plugins/log-deprecated-notices/

相关推荐

如何使用WooCommerce在React.js主题中呈现WP REST-API端点

我正在使用React构建一个电子商务Wordpress/Woocommerce主题。js。我正在使用npm软件包:create-react-wptheme此包直接在索引内部呈现react应用程序。wordpress主题的php。我不确定如何访问react中的wordpress api端点。js组件。我已经使用jsx为站点创建了模板,需要访问api端点来呈现动态内容。我可以使用对外部api的http请求访问这些点,但我需要能够访问react wp主题内的完整api。据我所知,我需要使用主干。js api客户