Wordpress REST API中的自定义端点被禁止,但我已登录
使用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
权限\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
文件中。