Автоматизация сбора данных с помощью форм — одна из частых задач на сайтах WordPress. Особенно это актуально, если необходимо не просто получить данные от пользователя, но и сразу их обработать, сохранить в базе, отправить уведомления, а возможно, и интегрировать с внешними сервисами. В этой статье подробно разберём, как создать автоформы в WordPress с автоматической обработкой данных, используя примеры плагинов и собственный код.
Почему нужны автоформы с автоматической обработкой данных
Часто стандартных форм обратной связи недостаточно. Например, если вы хотите:
- Собирать данные для аналитики и сразу сохранять их в отдельной таблице базы данных;
- Обеспечить автоматическую валидацию и фильтрацию введённых данных;
- Отправлять уведомления в админку и пользователю без задержек;
- Интегрировать данные с CRM или рассылками через API.
Реализовать всё это вручную можно, но гораздо удобнее использовать плагины с расширенными возможностями либо написать собственные обработчики на PHP, которые будут работать напрямую с данными.
Использование плагинов для создания автоформ
Плагин Gravity Forms с дополнительными хуками
Gravity Forms — один из самых мощных плагинов для создания форм в WordPress. Он позволяет создавать сложные формы с логикой, многоуровневой валидацией и автоматической обработкой.
Для автоматической обработки данных можно использовать хук gform_after_submission, который вызывается после успешной отправки формы. Пример кода:
add_action('gform_after_submission_1', 'wpdata_handle_gravity_form', 10, 2); // где 1 - ID формы
function wpdata_handle_gravity_form($entry, $form) {
$name = rgar($entry, '1'); // получаем поле с ID 1
$email = rgar($entry, '2');
// Сохраняем данные в кастомную таблицу
global $wpdb;
$table = $wpdb->prefix . 'wpdata_submissions';
$wpdb->insert($table, [
'name' => $name,
'email' => $email,
'date' => current_time('mysql')
]);
// Отправляем уведомление администратору
wp_mail(get_option('admin_email'), 'Новая заявка', "Пользователь: $name, Email: $email");
}Такой подход позволяет максимально адаптировать обработку под ваши задачи.
Плагин Contact Form 7 и обработка через AJAX
Contact Form 7 часто используется для простых форм, но с помощью JavaScript и AJAX можно организовать автоматическую обработку и валидацию на стороне сервера.
Например, можно добавить кастомный обработчик, который принимает POST-запрос, проверяет данные и сохраняет их в базу или отправляет в CRM. Для этого в functions.php темы или в собственном плагине регистрируем AJAX-обработчик:
add_action('wp_ajax_wpdata_cf7_submit', 'wpdata_cf7_submit_handler');
add_action('wp_ajax_nopriv_wpdata_cf7_submit', 'wpdata_cf7_submit_handler');
function wpdata_cf7_submit_handler() {
check_ajax_referer('wpdata_nonce', 'nonce');
$name = sanitize_text_field($_POST['name']);
$email = sanitize_email($_POST['email']);
if (!is_email($email)) {
wp_send_json_error('Неверный email');
}
global $wpdb;
$table = $wpdb->prefix . 'wpdata_submissions';
$wpdb->insert($table, [
'name' => $name,
'email' => $email,
'date' => current_time('mysql')
]);
wp_send_json_success('Данные успешно отправлены');
}На стороне формы добавляется JavaScript для отправки данных по AJAX и обработки ответа без перезагрузки страницы.
Создание собственной таблицы для хранения данных
Для эффективного хранения и обработки данных имеет смысл создать отдельную таблицу в базе данных WordPress. Вот пример функции для создания таблицы при активации плагина или темы:
function wpdata_create_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'wpdata_submissions';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
email varchar(100) NOT NULL,
date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
register_activation_hook(__FILE__, 'wpdata_create_table');Эта таблица позволит хранить заявки или любые другие данные с форм в структурированном виде для последующего анализа.
Валидация и безопасность данных
Очень важно не забывать про безопасность при работе с автоформами:
- Используйте функции
sanitize_text_field,sanitize_emailи аналогичные, чтобы очистить входящие данные. - Применяйте nonce-поля для защиты от CSRF-атак.
- Используйте подготовленные запросы через $wpdb->prepare() или $wpdb->insert(), как показано в примерах.
- Ограничивайте права доступа, например, обрабатывайте AJAX-запросы только для авторизованных пользователей, если нужно.
Интеграция с WPData и другими плагинами для аналитики
Если вы используете плагин WPData, можно настроить автоматический импорт и визуализацию данных, собранных через автоформы. Это позволяет создавать отчёты и графики прямо в админке без дополнительного кода.
Пример интеграции: после сохранения данных в кастомную таблицу, WPData может автоматически обновлять отчёты по расписанию, используя встроенные возможности плагина. Подробнее о WPData с UTM в описании: плагин WPData.
Выводы по созданию автоформ с автоматической обработкой в WordPress
Автоформы с автоматической обработкой данных — мощный инструмент для сайтов на WordPress, позволяющий собирать и использовать данные максимально эффективно. Используйте готовые решения, такие как Gravity Forms с хуками, Contact Form 7 с AJAX, или создавайте свои обработчики и таблицы для уникальных задач.
Не забывайте про безопасность и валидацию, а также интеграцию с аналитикой и CRM для максимальной отдачи от собранных данных.