使用JSON通过JSON发送哪些参数联系表7

时间:2019-06-24 06:36:15

标签: json wordpress api contact-form-7

我想为联系表单7创建API。

如何使用WP rest API将数据从前端发送到Contact Form 7? 我的意思是,通过POST方法发送数据的数据结构应该是什么?

http://xx.xxx/wp-json/contact-form-7/v1/contact-forms/<id-form>/feedback

我尝试了不同的方式,但是请求始终返回响应“ validation_failed”,“一个或多个字段包含错误的数据。请检查它们,然后重试。”

我在文档中没有发现任何有关此的信息。

2 个答案:

答案 0 :(得分:1)

您能够找到解决方案吗?我一直在使用Contact Form 7 REST API,并且需要做一些事情才能获得“成功”响应,而不是validation_failed

首先,您需要知道需要提交哪些表单字段。这是在您的CF7的联系表中设置的。字段名称在联系表格中定义。 CF7最有可能使用命名结构your-nameyour-email。因此,您将需要格式化您的帖子正文以使其与此匹配。

接下来,您需要使用FormData() https://developer.mozilla.org/en-US/docs/Web/API/FormData提交。从个人经验来看,我发现如果我通过使用post作为普通对象发送请求,CF7会发回validation_failed

注意:我正在使用Nuxt的http包来提交数据,但是您可以在此处使用axios。

// Format your body response
const emailBody = {
    "your-name": this.form.name,
    "your-email": this.form.email,
    "your-message": this.form.message,
};

// Create a FormData object, and append each field to the object
const form = new FormData();
for (const field in emailBody) {
    form.append(field, emailBody[field]);
}

// Submit your form body using axios, or any other way you would like
const response = await this.$http.post(this.getEndEndpoint, form);

这对我有用,我不再获得状态validation_failed。相反,我现在获得spam状态。现在尝试解决此问题

祝你好运

答案 1 :(得分:0)

add_filter( 'wpcf7_mail_components', 'show_cf7_request', 10, 3 );
function show_cf7_request( $components, $wpcf7_get_current_contact_form, $instance ) { 
    print_r($_REQUEST);
    die();
    return $components; 
}; 

不要尝试LIVE;)