ワードプレスのContact Form 7 の任意のフォームの送信内容を送信時に置き換える方法について解説いたします。

Contact Form 7 の送信メール内容を動的に送信時(送信前)に書き換え

下記のコード例は、テーマのFunctions.phpなどに記載いただくと動作いたします。

add_action('wpcf7_before_send_mail', function($contact_form, &$abort, $submission) {
	$form_id = $contact_form->id();
	
	if($form_id == フォームのID){

                $replace = "https://wp-doctor.jp/";
	
		$mail = $contact_form->prop('mail');
		$mail['body'] = str_replace('***LINK***', $replace, $mail['body']);
		$contact_form->set_properties(['mail' => $mail]);
		
		$mail2 = $contact_form->prop('mail_2');
		$mail2['body'] = str_replace('***LINK***', $replace, $mail2['body']);
		$contact_form->set_properties(['mail_2' => $mail2]);
	
	}
	
},  10, 3);

このコードでは、Contact Form 7の送信の直前に割り込んで、フォームの送信文字列に書き込まれている***LINK***という文字列を管理者あてのメールと自動返信(メール2)で $replace の文言委置き換えます。

※フォームの送信メールの設定例は下図のようになります
※「フォームのID」 の部分には文字列を置き換えたいお問い合わせフォームの数字のIDを指定してください

このようなコードを使えば下記のようなことが可能となります

・フォームを送信する時間帯によって内容を変える

・任意のデータベースのデータやカスタムフィールドと連携して送信メールの内容を変える

・フォームの選択肢によって内容を変える
※この場合送信データを取得して条件分岐が必要です。下記はコード例となります

$data = $submission->get_posted_data();
if (isset($data['your-gender']) && $data['your-gender'] == "女性") {
}

・複数のメールフォームの送信愛用を一括で置き換え

ご参考になりましたら幸いです。

WordPress ワードプレスサイトのカスタマイズや修正のご依頼・ご相談はWPドクターまでお気軽にお送りください