首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态更改CF7状态

动态更改CF7状态
EN

Stack Overflow用户
提问于 2017-08-12 15:31:28
回答 1查看 2.2K关注 0票数 0

我试图在API调用之后更改联系人表单7结果的状态,以便在需要时在前端返回一个错误(即默认情况下,这将显示表单下的红色错误,来自ajax响应)

我正在使用Forms3rdPartyIntegration插件,但这给了我一个回调钩子,然后我可以尝试更改CF7输出(https://github.com/zaus/forms-3rdparty-integration)。

据我所知,CF7状态是只读的吗?我看不出有什么方法可以阻止CF7给出一个mail_sent_ok状态

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2017-11-28 11:45:43

我知道这是个老问题,但对于任何遇到这个问题的人来说,我想你是在寻找这个问题:

代码语言:javascript
复制
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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45651952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档