我想为联系表单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”,“一个或多个字段包含错误的数据。请检查它们,然后重试。”
我在文档中没有发现任何有关此的信息。
答案 0 :(得分:1)
您能够找到解决方案吗?我一直在使用Contact Form 7 REST API,并且需要做一些事情才能获得“成功”响应,而不是validation_failed
。
首先,您需要知道需要提交哪些表单字段。这是在您的CF7的联系表中设置的。字段名称在联系表格中定义。 CF7最有可能使用命名结构your-name
和your-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;)