我试图在API调用之后更改联系人表单7结果的状态,以便在需要时在前端返回一个错误(即默认情况下,这将显示表单下的红色错误,来自ajax响应)
我正在使用Forms3rdPartyIntegration插件,但这给了我一个回调钩子,然后我可以尝试更改CF7输出(https://github.com/zaus/forms-3rdparty-integration)。
据我所知,CF7状态是只读的吗?我看不出有什么方法可以阻止CF7给出一个mail_sent_ok状态
add_action('Forms3rdPartyIntegration_service', array(&$this, 'service_callback'), 10, 2);
public function service_callback($response, $results) {
$submission = WPCF7_Submission::get_instance();
$cf7 = WPCF7_ContactForm::get_current();
// check for errors (code omitted)
// this is what I am essentially trying to do
// but doesn't work
$submission->status = 'mail_failed'
$cf7->skip_mail = true;
...
}如果有人对触发CF7失败响应有任何提示,我将不胜感激。
这似乎是一个类似的问题,wordpress invalidate cf7 after api call
发布于 2017-11-28 11:45:43
我知道这是个老问题,但对于任何遇到这个问题的人来说,我想你是在寻找这个问题:
if(your_condition) {
add_filter("wpcf7_ajax_json_echo", function ($response, $result) {
$response["status"] = "mail_sent_ng";
$response["message"] = "Validation errors occurred. Please confirm the fields and submit it again.";
return $response;
});
}这给出了状态mail_sent_ng而不是mail_ok_sent。
$response["message"]还设置向用户显示的错误/ajax消息。
因为您的代码中已经包含了$cf7->skip_mail = true,所以您已经停止了邮件的发送,使用上面的代码,您已经向用户显示了一个错误。
您还可以使用状态validation_error。
https://stackoverflow.com/questions/45651952
复制相似问题