目前,我正试图了解Wordpress及其与REST的关系。所有这些问题都是在插件开发的背景下发生的。到目前为止,我已经设置了端点并编写了回调,每当有人向所述端点发送GET请求时,回调将被执行。然而,我的回调从未被调用过。这是我到目前为止写的文件。
/*
* Plugin Name: cola-learning
*/
if(!defined('ABSPATH')){
die;
}
if(!function_exists('add_action')){
echo 'You cant access this ressource!';
exit;
}
function PrintRESTResponse()
{
return rest_ensure_response("student");
}
function SetupREST()
{
return register_rest_route("student/v1","/view/",[
'methods' => 'GET',
'callback' => 'PrintRESTResponse'
],false);
}
add_action('rest_api_init','SetupREST');
也许这也有帮助,如果我给出一些关于我的开发机器的背景信息:- OS: Windows 10 - Server: Apache Web Server (包含在XAMPP中)- Wordpress版本: 5.3.2 - PHP版本: 7.4 - development :Eclip2019-12 CDT (带有PHP插件)
从我的研究来看,一切都应该很好。然而,它并没有:/我错过了一些重要的东西吗?
更新:
WordPress REST路由
WordPress对于指向REST的所有请求都有一个默认路由(至少如果您在Bitnami WordPress应用程序模块中使用XAMPP )。现在,如果要向所述REST发送请求,则该用户需要使用一个具有ip:port/ wants /rest_ with形式的URL。ip重新封装承载wordpress的服务器的ip地址。端口是所述服务器的端口。然而,wp-json是普通请求与REST请求不同的部分。这个部分之后的所有内容(rest_route)都是我在上面的源代码中定义的rest路由。
出了什么问题?
我的请求指向了错误的端点。因此,我使用了URL 'localhost:wpPort/wordpress/student/v1/view/'.但是,“wp/”部分丢失了。因此,WordPress将搜索一开始不存在的页面。相反,我应该使用URL 'localhost:wpPort/wordpress/wp-json/student/v1/view/'.
发布于 2020-03-06 20:41:19
经过一些故障排除后,原来用于测试的URL丢失了端点路径的一部分。
下面是测试新注册端点的正确路径。
localhost:80/wordpress/wp-json/student/v1/view/
这里有一些关于WP Rest端点的更多阅读:
https://developer.wordpress.org/rest-api/extending-the-rest-api/routes-and-endpoints/
https://stackoverflow.com/questions/60570059
复制相似问题