WPForms: как автоматически сохранять данные форм в базу данных WordPress

WPForms — один из самых популярных плагинов для создания форм в WordPress. По умолчанию данные, которые пользователи вводят в формы, отправляются на e-mail или интегрируются с внешними сервисами. Однако, иногда возникает задача сохранять все заполненные данные прямо в базу данных WordPress для последующего анализа, отчетности или интеграции.

Почему важно сохранять данные форм в базу данных WordPress

Стандартный функционал WPForms не хранит подробные данные в таблицах WordPress, а лишь транслирует их. Сохранение данных в базу открывает возможности:

  • Создавать собственные отчеты и статистику по заполненным формам;
  • Импортировать данные в CRM или другие системы;
  • Восстанавливать информацию при потере писем на e-mail;
  • Обеспечивать централизованное хранилище данных без зависимости от внешних сервисов.

Для реализации этой задачи можно использовать хук wpforms_process_complete, который вызывается при успешной отправке формы.

Использование хука wpforms_process_complete для сохранения данных

Хук wpforms_process_complete передает два параметра: ID формы и массив с данными, включая поля, введенные пользователем. Ниже пример функции, которая сохраняет данные в пользовательскую таблицу базы данных.

function wpform_ru_save_form_data_to_db($fields, $entry, $form_data) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wpform_ru_entries';

    $data_to_insert = array(
        'form_id' => $form_data['id'],
        'submitted_at' => current_time('mysql', 1),
        'field_data' => maybe_serialize($fields),
    );

    $format = array('%d', '%s', '%s');

    $wpdb->insert($table_name, $data_to_insert, $format);
}
add_action('wpforms_process_complete', 'wpform_ru_save_form_data_to_db', 10, 3);

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

function wpform_ru_create_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wpform_ru_entries';
    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE $table_name (
      id mediumint(9) NOT NULL AUTO_INCREMENT,
      form_id int NOT NULL,
      submitted_at datetime NOT NULL,
      field_data longtext NOT NULL,
      PRIMARY KEY  (id)
    ) $charset_collate;";

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
}
register_activation_hook(__FILE__, 'wpform_ru_create_table');

Как работать с сохраненными данными

После того, как данные сохраняются в базе, можно создавать собственные админ-страницы для просмотра, фильтрации и экспорта записей. Пример простого запроса к базе:

global $wpdb;
$table_name = $wpdb->prefix . 'wpform_ru_entries';
$results = $wpdb->get_results("SELECT * FROM $table_name WHERE form_id = 123 ORDER BY submitted_at DESC");

foreach ($results as $row) {
    $fields = maybe_unserialize($row->field_data);
    // Выводим или обрабатываем данные...
}

Это позволит создавать кастомные отчеты и интеграции с CRM, ERP или BI-системами.

Альтернативные плагины для хранения данных форм

Если хочется использовать готовое решение, а не писать код, можно рассмотреть плагины:

  • WPForms Storing Entries — расширение для сохранения и управления записями прямо в админке.
  • Clearfy Pro — плагин оптимизации с дополнительными настройками для работы с формами, включая хранение.

Советы по безопасности и производительности

При сохранении данных важно учитывать:

  • Очистку и валидацию пользовательских данных, чтобы избежать SQL-инъекций и XSS;
  • Оптимизацию таблиц, индексирование полей для быстрого поиска;
  • Регулярное резервное копирование базы;
  • Контроль доступа к данным, чтобы только администраторы могли их просматривать;
  • Лимитирование объема хранимых данных, например, удаление старых записей.

Реализация правильной архитектуры хранения данных позволит масштабировать сайт и улучшить качество обслуживания пользователей.

WPForms отладка проблем с переадресацией после отправки формы в WordPress
06.12.2025
Интеграция WPForms с Telegram: настройка и примеры кастомных уведомлений
02.01.2026
Оптимизация производительности WPForms за счёт правильной работы с базой данных
09.02.2026
WPForms и ответ на AJAX-запросы без перезагрузки страницы в WordPress
12.12.2025
Как создать подключаемые поля в WPForms с применением хуков
27.01.2026