Как настроить отправку файла на почту Wordpress?
Есть форма, инпут для файла выглядит так:
Никак не получается, файл не приходит на почту.
<div class="input__wrapper"> <input name="file" type="file" id="input__file" class="input input__file" value="1" multiple> <label for="input__file" class="input__file-button"> <p class="input__file-icon-wrapper"><img class="input__file-icon" src="https://qna.habr.com<?php echo get_template_directory_uri();?>/assets/img/icons/file_download.svg" alt="Выбрать файл" width="25"></p> <p class="input__file-button-text">Выберите файл</p> </label></div>
Обработчик AJAX
jQuery(document).ready(function ($) { var add_form = $('#form-ivent');var formData = new FormData(form); // Сброс значений полей $('#form-ivent input, #form-ivent textarea').on('blur', function () { $('#form-ivent input, #add_feedback textarea').removeClass('error'); $('.error-name,.error-tel,.error-email,.error-comments').remove(); $('#submit-form-ivent').val('Отправить'); }); // Отправка значений полей var options = { url: feedback_object.url, dаta: { action: 'feedback_action', nonce: feedback_object.nonce,formData, }, type: 'POST', dataType: 'json', beforeSubmit: function (xhr) { // При отправке формы меняем надпись на кнопке $('#submit-form-ivent').val('Отправляем...'); }, success: function (request, xhr, status, error) { if (request.success === true) { // Если все поля заполнены, отправляем данные и меняем надпись на кнопке// add_form.after('<div class="message-success">' + request.data + '</div>').slideDown(); $('#submit-form-ivent').val('Отправлено'); } else { // Если поля не заполнены, выводим сообщения и меняем надпись на кнопке $.each(request.data, function (key, val) { $('.art_' + key).addClass('error'); $('.art_' + key).before('<p class="error-' + key + '">' + val + '</p>'); }); $('#submit-form-ivent').val('Ошибка...'); } // При успешной отправке сбрасываем значения полей $('#form-ivent')[0].reset(); }, error: function (request, status, error) { $('#submit-form-ivent').val('Ошибка...'); } }; // Отправка формы add_form.ajaxForm(options);});
Проверяю файл в обработчик php
// Проверяем файловif($_FILES) {$filepath = array();$filename = array();$i = 0;foreach ($_FILES["file"]["error"] as $key => $error) {if ($error == UPLOAD_ERR_OK) {$filename[$i][0] = $_FILES["file"]["tmp_name"][$key];$filename[$i][1] = $_FILES["file"]["name"][$key];$i++;}}}
Отправляю форму в обработчике php
// Указываем адресата$email_to = 'email@yandex.ru';// Если адресат не указан, то берем данные из настроек сайтаif ( ! $email_to ) {$email_to = get_option( 'admin_email' );}$body = "Имя: $art_name \nТелефон: $art_tel \nEmail: $art_email \n\n\nМероприятие: $art_ivent \nИнтеграция: $art_adv \nСообщение: $art_comments";$headers = 'From: ' . $art_name . ' <' . $email_to . '>' . "\r\n" . 'Reply-To: ' . $email_to;$boundary = "--".md5(uniqid(time())); // генерируем разделитель$multipart .= $body;foreach ($filename as $key => $value) {$fp = fopen($value[0], "r"); $content = fread($fp, filesize($value[0]));fclose($fp);$file .= "--".$boundary."\r\n";$file .= "Content-Type: application/octet-stream\r\n";$file .= "Content-Transfer-Encoding: base64\r\n";$file .= "Content-Disposition: attachment; filename=\"".$value[1]."\"\r\n\r\n";$file .= chunk_split(base64_encode($content))."\r\n";}$multipart .= $file."--".$boundary."--\r\n";// Отправляем письмоwp_mail( $email_to, $art_subject, $body, $headers, $filename, $multipart );// Отправляем сообщение об успешной отправке$message_success = 'Сообщение отправлено. В ближайшее время с вами свяжутся.';wp_send_json_success( $message_success );}
Никак не получается, файл не приходит на почту.

Смотрите также:
В комментариях запрещаются спам, а также реклама любых товаров и услуг, иных ресурсов.