联系表格7:使用wpcf7_before_send_mail创建的钩子仅用于一个联系人表单使用编号
问题描述:
我正在使用联系表单7创建多个表单的网站上工作。对于这些表单之一,我传递了使用隐藏收集的变量输入字段的形式。我现在用的是wpcf7_before_send_mail钩通过这些变量到电子邮件,但这些值传递到每一个邮件(我加了动态变量和静态文本)下面的代码:联系表格7:使用wpcf7_before_send_mail创建的钩子仅用于一个联系人表单使用编号
add_action('wpcf7_before_send_mail', 'wpcf7_add_text_to_mail_body');
function wpcf7_add_text_to_mail_body($contact_form){
$values_list = $_POST['valsitems'];
$values_str = implode(", ", $values_list);
// get mail property
$mail = $contact_form->prop('mail'); // returns array
// add content to email body
$mail['body'] .= 'INDUSTRIES SELECTED';
$mail['body'] .= $values_list;
// set mail property with changed value(s)
$contact_form->set_properties(array('mail' => $mail));
}
我试图找出如何只将这些值传递给联系表单电子邮件模板之一,可能通过表单ID。
答
联系表单7使用隐藏的输入类型来存储表单ID。它使用隐藏字段名称_wpcf7。你可以像这样获取表单Id。
$form_id = $contact_form->posted_data['_wpcf7'];
所以,你最终的代码应该是
add_action('wpcf7_before_send_mail', 'wpcf7_add_text_to_mail_body');
function wpcf7_add_text_to_mail_body($contact_form){
$form_id = $contact_form->posted_data['_wpcf7'];
if ($form_id == 123): // 123 => Your Form ID.
$values_list = $_POST['valsitems'];
$values_str = implode(", ", $values_list);
// get mail property
$mail = $contact_form->prop('mail'); // returns array
// add content to email body
$mail['body'] .= 'INDUSTRIES SELECTED';
$mail['body'] .= $values_list;
// set mail property with changed value(s)
$contact_form->set_properties(array('mail' => $mail));
endif;
}
希望这有助于。
答
我正在使用Dinesh的答案,但它停止为我工作。相反,我现在检查的字段是唯一的,我提交表单:
add_action('wpcf7_before_send_mail', 'wpcf7_add_text_to_mail_body');
function wpcf7_add_text_to_mail_body($contact_form){
$submission = WPCF7_Submission::get_instance();
$posted_data = $submission->get_posted_data();
if(!empty($posted_data["dealer_email"])){ //use a field unique to your form
$email = trim($posted_data["dealer_email"]);
// more custom stuff here
}
}
一定要在你的每一个形式,你可以用它来做到这一点至少一个独特的形式名称。通过函数获取$ contact_form的表单ID仍然是可能的,但这工作,我满意的结果。
谢谢你)保存我的日子 –
使用'$ contact_form-> id()'获取表单ID – frederikvdbe