2015-05-29 34 views
6

我正在使用聯繫表單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。

回答

8

聯繫表單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

1

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

相關問題