私たちは、フォームに入力されたEメールアドレスにEメールを送信する必要があるという競争を行っています。これを行うにはContact Form 7を使用しています。
これは簡単だと思いましたが、フォームは次の構文を受け入れません。
[friend1-email], [friend2-email], [friend3-email], [friend4-email], [friend5-email]
ToまたはBccフィールドに。
解決策は、Toフィールドの値をハードコードしてからフックで上書きすることではないかと思いますが、そのフィルター/フックがどうなるかわからない。
任意の助けをいただければ幸いです。
コードを記述する必要はありません。Contactform 7のMail
セクションには追加ヘッダーの機能があります。そのため、Mail
(Second Tab)セクションのAdditional headersテキストボックス内にメールのヘッダーを書き込むだけです。
これを「追加ヘッダー」テキストボックスに入れます。
Cc: [friend1-email], [friend2-email], [friend3-email], [friend4-email], [friend5-email]
OR
フックwpcf7_before_send_mail
try以下のコードでメールヘッダーデータを変更できます。
add_action('wpcf7_before_send_mail','dynamic_addcc');
function dynamic_addcc($WPCF7_ContactForm){
// Check contact form id.
if (33 == $WPCF7_ContactForm->id()) {
$currentformInstance = WPCF7_ContactForm::get_current();
$contactformsubmition = WPCF7_Submission::get_instance();
if ($contactformsubmition) {
$cc_email = array();
/* -------------- */
// replace with your email field's names
if(is_email($_POST['friend1-email'])){
array_Push($cc_email, $_POST['friend1-email']);
}
if(is_email($_POST['friend2-email'])){
array_Push($cc_email, $_POST['friend2-email']);
}
/* -------------- */
// saparate all emails by comma.
$cclist = implode(', ',$cc_email);
$data = $contactformsubmition->get_posted_data();
if (empty($data))
return;
$mail = $currentformInstance->prop('mail');
if(!empty($cclist)){
$mail['additional_headers'] = "Cc: $cclist";
}
// Save the email body
$currentformInstance->set_properties(array(
"mail" => $mail
));
// return current cf7 instance
return $currentformInstance;
}
}
}
wpcf7_before_send_mail
フックは、電子メールの送信前に実行され、フォームデータを変更できます。