Как прикрепить файл к сообщению при отправке формы
-
Привет! Нужна помощь сообщества начинающему)
Есть достаточно простая форма, которую заполняет клиент, и в которой он может прикрепить файл. Эта форма потом летит на почту исполнителю.
Код формы выглядит так:<form action="" method="post" class="calc__form" enctype="multipart/form-data"> <input required type="radio" name="sortType" value="Лазерная гравировка" checked="checked" id="sort-relevance"> <label for="sort-relevance">Лазерная гравировка</label> <input required type="radio" name="sortType" value="Лазерная резка" id="sort-best"><label for="sort-best">Лазерная резка</label> <input required type="text" name="name" placeholder="Ваше имя...."> <input type="text" name="phone" placeholder="Телефон...."> <input type="file" name="file"> <input type="hidden" name="form" value="2" /> <input type="hidden" name="action" value="send_form" /> <input type="submit" value="Отправить"> </form>
ajax скрипт выглядит так:
//form handler jQuery( 'form').on( 'submit', function() { var form_data = jQuery( this ).serializeArray(); // Here we add our nonce form_data.push( { "name" : "security", "value" : ajax_nonce } ); // Here is the ajax petition. jQuery.ajax({ url : ajax_url, // Here goes our WordPress AJAX endpoint. type : 'post', data : form_data, success : function( response ) { // Reset form and show popup $('.success').removeClass('success__hidden'); $(".calc__form")[0].reset(); }, fail : function( err ) { // Allert if error alert( "There was an error: " + err ); } }); // This return prevents the submit event to refresh the page. return false; });
Так выглядит скрипт отправки сообщения в functions.php:
/** * form handler */ function javascript_variables(){ ?> <script type="text/javascript"> var ajax_url = '<?php echo admin_url( "admin-ajax.php" ); ?>'; var ajax_nonce = '<?php echo wp_create_nonce( "secure_nonce_name" ); ?>'; </script><?php } add_action ( 'wp_head', 'javascript_variables' ); add_action('wp_ajax_send_form', 'send_form'); // This is for authenticated users add_action('wp_ajax_nopriv_send_form', 'send_form'); // This is for unauthenticated users. function send_form(){ check_ajax_referer( 'secure_nonce_name', 'security' ); $to = 'myemail@mail.com'; $subject = 'mail from form "make calculation"'; $body = 'Клиент выбрал: ' . $_POST['sortType'] . '\n'; $body .= 'Имя клиента: ' . $_POST['name'] . '\n'; $body .= 'Телефон: ' . $_POST['phone'] . '\n'; wp_mail( $to, $subject, $body, $headers ); echo 'Done!'; wp_die(); }
Пытался разными способами дописать скрипт и добавить отправку файла на почту, но к сожалению никак не хочет отправлять. Возможно кто-то уже сталкивался когда писал кастомную форму без плагинов. Хотелось бы попросить помощи или как дописать скрипт правильно или возможно у кого-то есть хорошая статья на эту тему, к сожалению хороших статей именно на отправку файла через используя встроенные возможности wp без плагинов не смог найти( Спасибо за отклик!
- Тема «Как прикрепить файл к сообщению при отправке формы» закрыта для новых ответов.