Come posso inviare a più destinatari in Contact Form 7 in base all'input del modulo?
Stiamo gestendo un concorso dove dobbiamo inviare email agli indirizzi email che vengono inseriti in un modulo. Sto utilizzando Contact Form 7 per farlo.
Pensavo fosse semplice ma il modulo non accetta la sintassi di:
[friend1-email], [friend2-email], [friend3-email], [friend4-email], [friend5-email]
Nel campo A o Ccn.
Penso che la soluzione potrebbe essere quella di inserire un valore fisso nel campo A e poi sovrascriverlo con un hook, ma non riesco a capire quale filtro/hook potrebbe essere.
Qualsiasi aiuto è apprezzato.

Non è necessario scrivere alcun codice, Contact Form 7 ha la funzionalità di Intestazioni Aggiuntive nella sezione Mail
. In quella sezione, devi solo scrivere l'intestazione dell'email all'interno della casella di testo Intestazioni aggiuntive nella sezione Mail
(seconda scheda).
Inserisci questo nella casella di testo Intestazioni aggiuntive.
Cc: [friend1-email], [friend2-email], [friend3-email], [friend4-email], [friend5-email]
OPPURE
Puoi modificare i dati dell'intestazione dell'email utilizzando gli hook wpcf7_before_send_mail
, prova il codice qui sotto.
add_action('wpcf7_before_send_mail','dynamic_addcc');
function dynamic_addcc($WPCF7_ContactForm){
// Controlla l'ID del form di contatto.
if (33 == $WPCF7_ContactForm->id()) {
$currentformInstance = WPCF7_ContactForm::get_current();
$contactformsubmition = WPCF7_Submission::get_instance();
if ($contactformsubmition) {
$cc_email = array();
/* -------------- */
// sostituisci con i nomi dei tuoi campi email
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']);
}
/* -------------- */
// separa tutte le email con una virgola.
$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";
}
// Salva il corpo dell'email
$currentformInstance->set_properties(array(
"mail" => $mail
));
// restituisce l'istanza corrente di CF7
return $currentformInstance;
}
}
}
L'hook wpcf7_before_send_mail
viene eseguito prima dell'invio dell'email, puoi modificare i dati del form.

tutte le email all'interno di Cc:
devono essere presenti altrimenti genererà un errore,

@mikemike ho aggiornato la mia risposta, sostituisci con l'ID del tuo modulo di contatto e il nome dei campi.
