Как заполненные данные формы конвертировать в CSV и при submit отправить на почту с помощью WordPress?

Для конвертации заполненных данных формы в формат CSV и отправки ее на почту с помощью WordPress, необходимо выполнить несколько шагов.

Шаг 1: Создание формы в WordPress
Создайте форму на своей странице WordPress, используя HTML-элементы формы. Убедитесь, что каждое поле формы имеет уникальное имя, которое будет использоваться для получения данных в JavaScript.

Шаг 2: Подключение скрипта JavaScript
Создайте скрипт JavaScript, который будет обрабатывать отправку формы и конвертировать данные в формат CSV. Добавьте следующий код в файлы вашей темы или в плагин:

(function($) {
  $(document).ready(function () {
    $('form').submit(function (event) {
      event.preventDefault(); // Отменить отправку формы
    
      // Получение данных из формы
      var formData = new FormData(this);
      var csvData = "";

      // Проход по каждому полю формы
      for (var pair of formData.entries()) {
        csvData += pair[0] + "," + pair[1] + "n"; // Добавление данных в CSV формат
      }
    
      // Отправка данных на сервер
      $.ajax({
        type: 'POST',
        url: '/wp-admin/admin-ajax.php',
        data: {
          action: "send_csv_email",
          csv_data: csvData
        },
        success: function (response) {
          console.log(response); // Результат отправки данных на сервер
        }
      });
    });
  });
})(jQuery);

Этот скрипт JavaScript отменяет стандартное действие отправки формы, загружает данные формы в виде объекта FormData, конвертирует его в формат CSV и отправляет данные на сервер при помощи AJAX-запроса на URL wp-admin/admin-ajax.php.

Шаг 3: Создание серверного обработчика
Теперь необходимо создать серверный обработчик для обработки AJAX-запроса и отправки CSV-данных по электронной почте. Добавьте следующий код в файл functions.php вашей темы или в плагин:

function send_csv_email() {
  $csvData = $_POST['csv_data'];

  // Создание временного файла CSV
  $tmpFile = tempnam(sys_get_temp_dir(), 'csv');
  file_put_contents($tmpFile, $csvData);

  // Определяем email-адрес, на который отправлять
  $to = '[email protected]';

  // Определяем тему письма и заголовки
  $subject = 'CSV Data from Form';
  $headers = array(
    'From: WordPress Site <[email protected]>',
    'Content-Type: text/csv; charset=UTF-8'
  );

  // Прикрепляем файл CSV к письму
  $attachments = array($tmpFile);

  // Отправка письма
  wp_mail($to, $subject, '', $headers, $attachments);

  // Удаляем временный файл CSV
  unlink($tmpFile);

  wp_die(); // Завершение обработчика AJAX-запроса
}
add_action('wp_ajax_send_csv_email', 'send_csv_email');
add_action('wp_ajax_nopriv_send_csv_email', 'send_csv_email');

Функция send_csv_email обрабатывает AJAX-запрос и отправляет электронное письмо с прикрепленным файлом CSV, содержащим данные из формы. Укажите свой действительный адрес электронной почты в переменной $to и настройте тему и заголовки в соответствии с вашими потребностями.

Шаг 4: Добавление действий WordPress
Добавьте следующий код в файл functions.php вашей темы или в плагин, чтобы зарегистрировать действия WordPress, необходимые для обработки AJAX-запросов:

function enqueue_scripts() {
  wp_enqueue_script('custom-form-script', get_template_directory_uri() . '/path/to/your/js/script.js', array('jquery'), '1.0', true);
}
add_action('wp_enqueue_scripts', 'enqueue_scripts');

В качестве параметра функции wp_enqueue_script укажите путь к вашему файлу JavaScript, содержащему код, описанный в шаге 2.

Теперь при отправке формы данные будут конвертироваться в формат CSV и отправляться по электронной почте, указанной в обработчике AJAX. Персонализируйте код в соответствии с вашими требованиями и настройками WordPress.