FainaEm38 30.01.2023 03:21

Как добавить и настроить форму обратной связи с файлом вложения на сайте в Wordpress?

Здравствуйте! У меня возникла проблема с добавлением и настройкой формы обратной связи с файлом вложения на моем сайте, который работает на WordPress. Я бы хотел, чтобы пользователи могли отправлять сообщения через эту форму, прикреплять файлы и я получал их на почту. Однако, у меня не получается реализовать это самостоятельно. Помогите, пожалуйста!

У меня уже есть готовый код формы, но я не уверен, как правильно его настроить. Привожу ниже пример кода:

<form action="" method="post" enctype="multipart/form-data">
    <div>
        <label for="name">Имя:</label>
        <input type="text" id="name" name="name" required>
    </div>
    <div>
        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required>
    </div>
    <div>
        <label for="message">Сообщение:</label>
        <textarea id="message" name="message" required></textarea>
    </div>
    <div>
        <label for="attachment">Прикрепить файл:</label>
        <input type="file" id="attachment" name="attachment">
    </div>
    <div>
        <input type="submit" value="Отправить">
    </div>
</form>

Буду очень благодарен, если вы поможете мне настроить эту форму, чтобы я мог получать сообщения с вложением на свою почту. Заранее спасибо!

Ответы:

Polina32Blue 30.01.2023 03:36
- проверьте настройки SMTP-сервера, чтобы убедиться, что они корректно настроены для отправки почты с вложениями.
leon25vlad 30.01.2023 03:46
Убедитесь, что у вас настроена правильная почтовая система, чтобы обрабатывать и отправлять сообщения с вложениями, используя плагин или настройки WordPress.
YuriyC24 30.01.2023 03:56

Проблему с добавлением и настройкой формы обратной связи с файлом на вашем сайте, работающем на WordPress, можно решить следующим образом:

1. Добавьте следующий код в файл functions.php вашей темы:

function wpse27856_set_content_type(){
    return "text/html";
}
add_filter( 'wp_mail_content_type','wpse27856_set_content_type' );

function wpse_form_submit(){
    if( isset( $_POST['name'] ) && isset( $_POST['email'] ) && isset( $_POST['message'] ) ){

        $name = sanitize_text_field( $_POST['name'] );
        $email = sanitize_email( $_POST['email'] );
        $message = sanitize_textarea_field( $_POST['message'] );

        $to = "your-email@example.com";//Замените на вашу электронную почту

        $subject = "Новое сообщение с формы обратной связи";
        $headers = "From: $name ";

        if( !function_exists( 'wp_handle_upload' ) ) require_once( ABSPATH . 'wp-admin/includes/file.php' );

        $uploadedfile = $_FILES['attachment'];
        $upload_overrides = array( 'test_form' => false );
        $movefile = wp_handle_upload( $uploadedfile, $upload_overrides );

        if( $movefile && !isset( $movefile['error'] ) ){
            $attachments = $movefile['file'];
        } else {
            $attachments = '';
        }

        $send = wp_mail( $to, $subject, $message, $headers, $attachments );

        if( $send ){
            echo '

Сообщение успешно отправлено!

'; } else { echo '

Ошибка при отправке сообщения. Пожалуйста, попробуйте еще раз.

'; } } } add_action( 'wp_ajax_nopriv_wpse_form_submit', 'wpse_form_submit' ); add_action( 'wp_ajax_wpse_form_submit', 'wpse_form_submit' );

2. Внутри директории вашей темы создайте файл с именем "wpse-form.js" и добавьте в него следующий код:

jQuery(document).ready(function($){
    $('form').on('submit', function(e){
        e.preventDefault();

        var formData = new FormData($(this)[0]);

        $.ajax({
            url: ajaxurl, // переменная ajaxurl доступна по умолчанию на страницах WordPress
            type: 'POST',
            data: formData,
            processData: false,
            contentType: false,
            success: function(response){
                $('#form-response').html(response);
            }
        });
    });
});

3. Вставьте следующий код в вашу страницу или пост, где вы хотите отображать форму обратной связи:

<div id="form-response"></div>
<form action="" method="post" enctype="multipart/form-data">
    <div>
        <label for="name">Имя:</label>
        <input type="text" id="name" name="name" required>
    </div>
    <div>
        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required>
    </div>
    <div>
        <label for="message">Сообщение:</label>
        <textarea id="message" name="message" required></textarea>
    </div>
    <div>
        <label for="attachment">Прикрепить файл:</label>
        <input type="file" id="attachment" name="attachment">
    </div>
    <div>
        <input type="submit" value="Отправить">
    </div>
</form>

<script src="wp-content/themes/your-theme/wpse-form.js"></script>

Замените "your-email@example.com" на вашу электронную почту и "your-theme" на название вашей темы.

После выполнения этих шагов, вы должны быть в состоянии отправлять сообщения с вложениями через форму обратной связи на вашу почту. Если у вас возникнут какие-либо проблемы, пожалуйста, дайте мне знать.

Я надеюсь, что эта информация поможет вам решить вашу проблему. Удачи с вашим сайтом WordPress!

kiryapetrova2021 30.01.2023 04:03
Для настройки формы обратной связи с файлом вложения на вашем сайте, вам понадобится добавить несколько строк кода и настроить функцию отправки почты. Ваш код формы выглядит правильно. Однако, вам необходимо указать в атрибуте "action" абсолютный путь к файлу, который будет обрабатывать отправку формы. Например, если вы создали отдельный файл "send_email.php" для обработки отправки формы, то код формы должен выглядеть так:


    
Теперь, чтобы обработать отправку формы и отправить сообщение с вложением, вам необходимо создать файл "send_email.php" и добавить следующий код:


Не забудьте заменить "ваш_электронный_адрес@example.com" на свой адрес электронной почты, на который вы хотите получать сообщения с вложением. Этот код обрабатывает отправку формы, читает содержимое загруженного файла, кодирует его и добавляет в виде вложения к письму. Затем отправляет письмо на указанный адрес электронной почты. Надеюсь, это поможет вам настроить форму обратной связи с вложением на вашем сайте. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их. Удачи!

Добавить ответ