Nous organisons un concours dans le cadre duquel nous devons envoyer des courriers électroniques à des adresses électroniques saisies sur un formulaire. J'utilise le formulaire de contact 7 pour le faire.
Je pensais que ce serait simple, mais le formulaire n'acceptera pas la syntaxe de:
[friend1-email], [friend2-email], [friend3-email], [friend4-email], [friend5-email]
Dans le champ À ou Cci.
Je pense que la solution pourrait consister simplement à coder en dur une valeur dans le champ À, puis à la remplacer par un hook, mais je ne peux pas déterminer ce que pourrait être ce filtre/hook.
Toute aide appréciée.
Nul besoin d'écrire de code, le formulaire de contact 7 présente les fonctionnalités d'en-têtes supplémentaires dans la section Mail
. En cela, il vous suffit d'écrire l'en-tête de l'e-mail dans la zone de texte En-têtes supplémentaires dans la section Mail
(Deuxième onglet).
Placez ceci dans la zone de texte En-têtes supplémentaires.
Cc: [friend1-email], [friend2-email], [friend3-email], [friend4-email], [friend5-email]
OR
Vous pouvez modifier les données de l'en-tête de l'e-mail avec des crochets wpcf7_before_send_mail
essayer ci-dessous le code.
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;
}
}
}
__Cookle wpcf7_before_send_mail
s'exécute avant l'envoi du courrier électronique, vous pouvez modifier les données du formulaire.