Как отправить форму Contact Form 7 нескольким получателям на основе введенных данных?
Мы проводим конкурс, где нам нужно отправлять письма на email-адреса, которые вводятся в форме. Для этого я использую Contact Form 7.
Я думал, что это будет просто, но форма не принимает такой синтаксис:
[friend1-email], [friend2-email], [friend3-email], [friend4-email], [friend5-email]
В полях To или Bcc.
Я думаю, что решением может быть жестко закодированное значение в поле To с последующей его перезаписью через хук, но я не могу определить, какой именно фильтр/хук следует использовать.
Буду благодарен за любую помощь.

Нет необходимости писать код, так как Contact Form 7 имеет функцию "Дополнительные заголовки" в разделе Mail
. Вам просто нужно ввести заголовок письма в текстовое поле "Additional headers" во вкладке Mail
(вторая вкладка).
Вставьте это в текстовое поле "Additional headers":
Cc: [friend1-email], [friend2-email], [friend3-email], [friend4-email], [friend5-email]
ИЛИ
Вы можете изменить данные заголовка письма с помощью хука wpcf7_before_send_mail
. Попробуйте следующий код:
add_action('wpcf7_before_send_mail','dynamic_addcc');
function dynamic_addcc($WPCF7_ContactForm){
// Проверяем ID контактной формы.
if (33 == $WPCF7_ContactForm->id()) {
$currentformInstance = WPCF7_ContactForm::get_current();
$contactformsubmition = WPCF7_Submission::get_instance();
if ($contactformsubmition) {
$cc_email = array();
/* -------------- */
// замените на имена ваших полей с 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']);
}
/* -------------- */
// Разделяем все email запятыми.
$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";
}
// Сохраняем тело письма
$currentformInstance->set_properties(array(
"mail" => $mail
));
// Возвращаем текущий экземпляр CF7
return $currentformInstance;
}
}
}
Хук wpcf7_before_send_mail
срабатывает перед отправкой письма, позволяя вам изменить данные формы.

@mikemike я обновил свой ответ, замените на ID вашей контактной формы и имена полей.
