Я использую плагин, который позволяет отправлять по электронной почте x
количество людей. Все, что вам нужно сделать, это ввести свое «имя» и «адрес электронной почты». Эти записи называются friend_name[0]
и friend_email[0]
соответственно. Существуют кнопки +
и -
для добавления и удаления полей ввода. Число в $key
идет вверх и вниз относительно количества полей. Я подтвердил, что все $keys
изменяются в форме ввода.
Когда форма отправляется и обрабатывается через цикл, все сообщения электронной почты отправляются, но только до последнего введенного электронного письма. Поэтому, если я ввожу 5 имен и 5 электронных писем, они отправляют эти данные:
Имя: John Doe 1 E-Mail: JohnDoe5@gmail.com
Имя: John Doe 2 E-Mail: JohnDoe5@gmail.com
Имя: John Doe 3 E-Mail: JohnDoe5@gmail.com
Имя: John Doe 4 E-Mail: JohnDoe5@gmail.com
Имя: John Doe 5 E-Mail: JohnDoe5@gmail.com
Вот цикл:
function invfr_sendmail() { $post = ( !empty( $_POST ) ) ? true : false; if( $post ) { $subject = invfr_get_settings( 'subject' ); $message = invfr_get_settings( 'message' ); $friends = $_POST['friend_email']; $headers = "From:" . $_POST['user_name'] . " <" . $_POST['user_email']. ">" . "\r\n"; $errors = array(); foreach ( $friends as $key => $friend ) { $name = stripslashes( $_POST['friend_name'][$key] ); $email = trim( $_POST['friend_email'][$key] ); // Check name if( !$name ) $errors[] = '#friend_name-' . $key; if( !$email ) $errors[] = '#friend_email-' . $key; if( $email && !is_email( $email ) ) $errors[] = '#friend_email-' . $key; } // send email if( !$errors ) { foreach ( $friends as $key => $friend ) $mail = wp_mail( $email, invfr_tokens_replacement( $subject, $_POST, $key ), invfr_tokens_replacement( $message, $_POST, $key ), invfr_tokens_replacement( $headers, $_POST, $key ) ); if( $mail ) echo 'sent'; }