Wordpress REST API中的自定义端点被禁止,但我已登录

Wordpress REST API中的自定义端点被禁止,但我已登录,wordpress,rest,endpoint,Wordpress,Rest,Endpoint,使用Wordpress REST API创建了一个自定义端点,并将权限\u回调设置为编辑帖子。当用户单击我在仪表板中添加的菜单项时,将调用端点。它基本上是导出数据库表的GET请求 但是,请求会抛出一个rest\u禁止的错误(401) 我的代码如下所示: add_action('rest_api_init', function () { register_rest_route('foobar', '/get_calculator_results', array( 'meth

使用Wordpress REST API创建了一个自定义端点,并将
权限\u回调
设置为
编辑帖子
。当用户单击我在仪表板中添加的菜单项时,将调用端点。它基本上是导出数据库表的
GET
请求

但是,请求会抛出一个
rest\u禁止的
错误(401)

我的代码如下所示:

add_action('rest_api_init', function () {
    register_rest_route('foobar', '/get_calculator_results', array(
        'methods'             => 'GET',
        'callback'            => 'get_calculator_results',
        'permission_callback' => function () {
            return current_user_can('edit_posts');
        }
    ));
});

add_action("admin_menu", "add_export_results_menu_item");
function add_export_results_menu_item()
{
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? "https://" : "http://";
    $link     = $protocol . $_SERVER['SERVER_NAME'] . "/wp-json/foobar/get_calculator_results";
    add_menu_page("Export results", "Export results", "edit_posts", $link, "", "", 2);
}

我是否以错误的方式应用了
权限\u回调?

问题在于链接不包含
\u wpnce
。我的代码现在看起来像这样,授权用户不再禁止链接:

add_action("admin_menu", "add_export_results_menu_item");
function add_export_results_menu_item()
{
    $protocol  = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? "https://" : "http://";
    $link      = $protocol . $_SERVER['SERVER_NAME'] . "/wp-json/foobar/get_calculator_results";
    $nonce     = wp_create_nonce('wp_rest');
    $nonceLink = $link . '?_wpnonce=' . $nonce;
    add_menu_page("Export results", "Export results", "edit_posts", $nonceLink, "", "", 2);
}

您甚至可能不需要
权限\u回调
!通常您会得到
401
,因为您没有通过
nonce
。您可以编辑您的问题并添加javascript rest api调用片段吗?几乎总是有一个错误在那里,它几乎总是暂时的@Ruvee也许我不理解你的问题,但我原来帖子中的代码就是全部。我没有任何JavaScript逻辑。如果您没有使用JavaScript,那么如何向自定义端点发出
GET
请求?@Ruvee我所做的就是在CMS的仪表板中添加一个额外的菜单项,并将该菜单项的链接设置为自定义创建的端点,例如。访问该链接将触发我在端点中设置的函数,该函数执行一些逻辑。所有这些都写在我的
functions.php
文件中。