Поддержка Проблемы и решения Как прикрепить файл к сообщению при отправке формы

  • Решено ddashkevich

    (@ddashkevich)


    Привет! Нужна помощь сообщества начинающему)
    Есть достаточно простая форма, которую заполняет клиент, и в которой он может прикрепить файл. Эта форма потом летит на почту исполнителю.
    Код формы выглядит так:

    <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 без плагинов не смог найти( Спасибо за отклик!

    • Тема изменена 1 месяц назад пользователем ddashkevich.
    • Тема изменена 1 месяц назад пользователем ddashkevich.
Просмотр 3 ответов — с 1 по 3 (всего 3)
Просмотр 3 ответов — с 1 по 3 (всего 3)