Come posso inviare a più destinatari in Contact Form 7 in base all'input del modulo?

7 dic 2016, 10:40:17
Visualizzazioni: 24.4K
Voti: 4

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.

0
Tutte le risposte alla domanda 1
7

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]

Screenshot della sezione Intestazioni Aggiuntive in Contact Form 7

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.

7 dic 2016 11:00:36
Commenti

Questo risulta in un errore di sintassi

mikemike mikemike
7 dic 2016 11:06:31

rendi obbligatori tutti quei campi email, @mikemike

GKS GKS
7 dic 2016 11:14:53

Ma non sono obbligatori :(

mikemike mikemike
7 dic 2016 11:15:39

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

GKS GKS
7 dic 2016 11:19:21

Sì, da qui la mia domanda

mikemike mikemike
7 dic 2016 11:20:23

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

GKS GKS
7 dic 2016 12:14:13

cosa dovrebbe restituire l'intera funzione? Da quello che vedo nel codice, può restituire qualcosa solo quando $contactformsubmition è true. Cosa succede se $contactformsubmition non è true

Karue Benson Karue Karue Benson Karue
30 mag 2020 18:41:29
Mostra i restanti 2 commenti