Contact Form 7を使用して作成されたいくつかのフォームを持つサイトで作業しています。これらのフォームの1つとして、フォームの非表示の入力フィールドを使用して収集した変数を渡します。 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を介して、これらの値を連絡先フォームのメールテンプレートの1つにのみ渡す方法を理解しようとしています。
Contact Form 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
}
}
これを行うために使用できる各フォームには、少なくとも1つの一意のフォーム名が含まれていることを確認してください。関数を介して$ contact_formからフォームIDを取得することはまだ可能かもしれませんが、これは機能し、結果に満足しました。
このプラグインでは、フォームIDと送信済みフィールドを取得する方法が2015年以降変更されています。
フォームIDを取得するには、これを使用する必要があります。
$form_id = $contact_form->id();
提出データを取得するには、($ _ POSTの代わりに)これを使用する必要があります。
$submission = WPCF7_Submission::get_instance();
$posted_data = $submission->get_posted_data();
すべてをまとめると、スニペットは次のようになります。
add_action( 'wpcf7_before_send_mail', 'wpcf7_add_text_to_mail_body' );
function wpcf7_add_text_to_mail_body( $contact_form ) {
//Get the form ID
$form_id = $contact_form->id();
//Do something specifically for form with the ID "123"
if( $form_id == 123 ) {
$submission = WPCF7_Submission::get_instance();
$posted_data = $submission->get_posted_data();
$values_list = $posted_data['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 ) );
}
}