我正在使用在functions.php中定义的自定义wordpress端点:
add_action('rest_api_init', function () {
register_rest_route('custom_endpoint', 'submit-application', [
'methods' => 'POST',
'callback' => 'submit_application'
]);
});
我正在使用端点来处理通过 jetform 生成器发送的一些表单数据。处理表单数据后(对外部 api 的各种调用),我想重定向到 api 动态返回的 url。目前,业务逻辑全部成功,但我一生都无法使重定向正常工作。表单提交并显示消息“表单已成功提交”。
function submit_application ( $request ) {
//Business logic here all succeeds
$user= send_data($data);
try {
return new \WP_REST_Response(
null,
303,
array(
'Location' => $user['url'],
)
);
} catch (Exception $e) {
return new WP_REST_Response( [
'status' => 'error',
'message' => $e->getMessage()
], 400 );
}
}
我也尝试过使用
wp_redirect( $user['url'] );
exit();
奇怪的是,我曾经让它工作过一次,我认为这就是这个确切的代码,但在我继续开发后它突然停止了。这也很奇怪,因为当我通过邮递员而不是表单提交尝试终点时,它似乎也正确接收了重定向。也许这表明缓存有问题?我对 WordPress 有点陌生,所以任何想法都会非常受欢迎!
发送表单数据到端点的请求正在被重定向。要重定向访问者,请接收来自端点的响应,然后进行重定向。
类似这样的东西(未经测试):
$request = wp_remote_request( ... );
$body = wp_remote_retrieve_body( $request );
wp_redirect( $body['redirect_url'];
exit();