Cum pot trimite către mai mulți destinatari în Contact Form 7 pe baza datelor din formular?
Organizăm un concurs în care trebuie să trimitem emailuri către adresele de email introduse într-un formular. Folosesc Contact Form 7 pentru aceasta.
Am crezut că va fi simplu, dar formularul nu acceptă sintaxa:
[friend1-email], [friend2-email], [friend3-email], [friend4-email], [friend5-email]
În câmpurile To sau Bcc.
Cred că soluția ar putea fi să setez o valoare fixă în câmpul To și apoi să o suprascriu cu un hook, dar nu-mi dau seama care ar fi acel filtru/hook.
Orice ajutor este apreciat.

Nu este nevoie să scrieți niciun cod, Contact form 7 are funcționalități de Anteturi Adiționale în secțiunea Mail
. În aceasta, trebuie doar să scrieți antetul e-mailului în caseta de text Anteturi adiționale din secțiunea Mail
(a doua filă).
Puneți acest text în caseta de text Anteturi adiționale.
Cc: [friend1-email], [friend2-email], [friend3-email], [friend4-email], [friend5-email]
SAU
Puteți modifica datele antetului e-mailului prin hook-ul wpcf7_before_send_mail
. Încercați codul de mai jos.
add_action('wpcf7_before_send_mail','dynamic_addcc');
function dynamic_addcc($WPCF7_ContactForm){
// Verifică ID-ul formularului de contact.
if (33 == $WPCF7_ContactForm->id()) {
$currentformInstance = WPCF7_ContactForm::get_current();
$contactformsubmition = WPCF7_Submission::get_instance();
if ($contactformsubmition) {
$cc_email = array();
/* -------------- */
// înlocuiți cu numele câmpurilor de e-mail
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']);
}
/* -------------- */
// separă toate e-mailurile prin virgulă.
$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";
}
// Salvează corpul e-mailului
$currentformInstance->set_properties(array(
"mail" => $mail
));
// returnează instanța curentă a cf7
return $currentformInstance;
}
}
}
Hook-ul wpcf7_before_send_mail
rulează înainte de trimiterea e-mailului, puteți modifica datele formularului.

toate adresele de email din Cc:
trebuie să fie prezente, altfel va genera o eroare,

@mikemike Am actualizat răspunsul meu, înlocuiește cu ID-ul formularului tău de contact și numele câmpurilor.
