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;
- Оптимизацию таблиц, индексирование полей для быстрого поиска;
- Регулярное резервное копирование базы;
- Контроль доступа к данным, чтобы только администраторы могли их просматривать;
- Лимитирование объема хранимых данных, например, удаление старых записей.
Реализация правильной архитектуры хранения данных позволит масштабировать сайт и улучшить качество обслуживания пользователей.