我有一个使用WordPress wp rest api的插件,用register_rest_route()注册一个自定义端点,调用一个回调函数给登录用户发送一封HTML电子邮件,这个HTML电子邮件里面有一个应该点击的链接返回其余的api并且应该路由到使用register_rest_route()函数创建的另一个自定义路由,该路由应该在路由参数中发送用户年龄,并且因此将调用回调并且它应该使用用户年龄信息并对其执行某些操作。我可以发送电子邮件并在收件箱中查看,但是当我按下电子邮件中的链接时(链接是这样的:http://127.0.0.1/myplugin/wp-json/mynamespace/v1/user/25)我没有达到终点并获得:{“代码“:”rest_no_route“,”message“:”找不到与URL和请求方法匹配的路由“,”data“:{”status“:404}},在chrome调试控制台上,错误消息为”无法加载资源:服务器响应状态为404(未找到)http://127.0.0.1/myplugin/wp-json/mynamespace/v1/user/25“
//code for custom end points inside my plugin..
function my_register_endpoints(){
register_rest_route(
// routes that sends an email is working
.
.
.
);
register_rest_route(
'mynamespace/v1',
'user/(?P<age>[\d]+)',
array(
'methods' => 'POST',
'callback' => 'my_callback',
'args' => array(
'age' => array(
'required' => true,
'validate_callback' => function($param, $request, $key) {
return is_numeric( $param );
}
)
),
'permission_callback' => function (WP_REST_Request $request) {
if(!is_user_logged_in()){
return new WP_Error('login error',__('You are not logged in','My-Error'));
}
return true;
}
)
);
}
}
add_action('rest_api_init','my_register_endpoints');
function my_callback(WP_REST_Request $request){
//should do something with $request['age']
$age=$request['age'];
}
如果有人能够解释并提供一些关于从自定义HTML电子邮件中击中wp rest api的过程的示例,会很高兴吗?怎么做?它可以是常规链接,还是应该在我的自定义html电子邮件中使用普通JS / JQuery / Angular $ http的Ajax请求,并在点击电子邮件中的链接时调用该调用?
(我正在使用mailcatcher查看电子邮件,我在本地主机上的XAMPP上测试我的wordpress网站)
答案 0 :(得分:0)
尝试使用自定义页面模板,而不是尝试从链接调用端点。然后,如果需要,该模板可以通过AJAX或直接从页面模板php调用您的端点。