CF7 отправка писем каждому получателю по отдельности
С помощью этого скрипта вы сможете заставить CF7 для определенной формы отправлять письма для каждого получателя по отдельности а не одно письмо для всех.
add_action('wpcf7_before_send_mail', function ($contact_form) {
$submission = WPCF7_Submission::get_instance();
$id = $contact_form->id; //получаем id формы
$mail = $contact_form->prop( 'mail' );
$recipient = explode( ',', $mail['recipient']);
//используем данный хук только для определенной формы
if($id == 10155) {
if ($recipient) {
if (is_array($recipient)) {
foreach ($recipient as $email) {
$r = array();
$p = array();
$data = $submission->get_posted_data();
if (is_array($data)) {
foreach ($data as $k => $v) {
$r[] = '[' . $k . ']';
$p[] = $v;
}
}
$body = str_replace($r, $p, $mail['body']);
wp_mail( $email, $mail['subject'], $body, 'From: '.$mail['sender'] );
}
//чтобы cf7 завершил выполнения своей работы отправляем письмо на выдуманый email
$mail['recipient'] = 'robot@test.com';
$contact_form->set_properties(array('mail' => $mail));
}
}
}
});