联系表格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; 

} 

希望这有助于。

+0

谢谢你)保存我的日子 –

+0

使用'$ contact_form-> id()'获取表单ID – frederikvdbe

我正在使用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仍然是可能的,但这工作,我满意的结果。