WPForms — один из самых популярных плагинов для создания форм на WordPress. Помимо удобного визуального конструктора, он предоставляет мощные возможности для разработчиков через API и хуки. В этой статье мы подробно рассмотрим, как автоматически обрабатывать ответы, отправленные через WPForms, с помощью пользовательских функций и хуков, чтобы расширить функциональность ваших форм.
Почему стоит автоматизировать обработку ответов в WPForms
Базовая отправка формы в WPForms обычно ограничивается сохранением данных и отправкой уведомления на почту. Однако часто требуется более сложная логика: например, отправка данных в CRM, запись в пользовательские таблицы базы данных, генерация уникальных кодов или запуск цепочек событий.
Автоматизация обработки ответов позволяет:
- Экономить время на ручной обработке данных.
- Интегрировать формы с внешними сервисами (CRM, почтовые рассылки и т.д.).
- Добавлять сложную бизнес-логику в процесс обработки.
- Улучшать взаимодействие с пользователями за счет динамических ответов.
Для этого WPForms предоставляет ряд хуков, самым полезным из которых является wpforms_process_complete.
Как использовать хук wpforms_process_complete для обработки данных формы
Хук wpforms_process_complete срабатывает сразу после успешной отправки формы и передачи данных. Его можно использовать для выполнения любых действий с данными, полученными из формы.
Сигнатура хука выглядит следующим образом:
do_action( 'wpforms_process_complete', $fields, $entry, $form_data );Где:
$fields— массив с полями формы и их значениями.$entry— объект записи (включая ID, дату и пр.).$form_data— массив с настройками и данными формы.
Пример функции, которая получает данные из формы и отправляет их в сторонний API:
function wpformsru_handle_form_submission( $fields, $entry, $form_data ) {
// Проверяем ID формы, если хотим обработать только конкретную
if ( $form_data['id'] !== 123 ) {
return;
}
$data_to_send = [];
foreach ( $fields as $field_id => $field ) {
// Собираем только нужные поля, например имя и email
if ( in_array( $field['name'], ['Name', 'Email'] ) ) {
$data_to_send[ $field['name'] ] = $field['value'];
}
}
// Отправляем данные во внешний API
$response = wp_remote_post( 'https://example.com/api/submit', [
'body' => json_encode( $data_to_send ),
'headers' => [
'Content-Type' => 'application/json',
],
] );
if ( is_wp_error( $response ) ) {
error_log( 'Ошибка отправки данных API: ' . $response->get_error_message() );
}
}
add_action( 'wpforms_process_complete', 'wpformsru_handle_form_submission', 10, 3 );В этом примере мы обрабатываем только форму с ID 123, получаем из нее поля "Name" и "Email" и отправляем на внешний сервис в формате JSON.
Создание кастомного уведомления после отправки формы
Помимо интеграции с API, можно создавать собственные уведомления. Например, отправлять письмо с индивидуальным сообщением или создавать запись в журнале.
Пример отправки дополнительного письма после успешной отправки формы:
function wpformsru_send_custom_notification( $fields, $entry, $form_data ) {
$to = 'admin@example.com';
$subject = 'Новая заявка с формы ' . $form_data['settings']['form_title'];
$message = "Поступила новая заявка:\n";
foreach ( $fields as $field ) {
$message .= $field['name'] . ': ' . $field['value'] . "\n";
}
wp_mail( $to, $subject, $message );
}
add_action( 'wpforms_process_complete', 'wpformsru_send_custom_notification', 20, 3 );Такой подход позволяет дублировать уведомления или создавать их с уникальным содержимым, что полезно для разных отделов или логики обработки.
Использование плагинов для расширения автоматизации WPForms
Если не хочется писать код, можно использовать плагины, расширяющие возможности WPForms:
- WPForms Zapier Addon — интеграция с более чем 2000 сервисов через Zapier.
- Uncanny Automator — автоматизация действий на сайте, запуск процессов при отправке формы.
- WP Webhooks — позволяет создавать вебхуки для отправки данных из форм.
Но если требуется кастомное, точное решение, лучше использовать собственный код на базе хука wpforms_process_complete.
Обработка ошибок и отладка кода автоматизации
При работе с кастомным кодом важно отлавливать ошибки. Для этого рекомендуем:
- Использовать
error_log()для записи ошибок в лог PHP. - Проверять результат вызовов
wp_remote_post()или аналогичных функций. - Добавлять в код условия проверки наличия нужных данных.
Пример простой проверки данных и логирования:
function wpformsru_handle_form_submission_safe( $fields, $entry, $form_data ) {
if ( $form_data['id'] !== 123 ) {
return;
}
if ( empty( $fields ) ) {
error_log( 'WPFormsRU: Пустые данные формы' );
return;
}
// Остальной код обработки...
}
add_action( 'wpforms_process_complete', 'wpformsru_handle_form_submission_safe', 10, 3 );Создание собственной таблицы для хранения ответов WPForms
Иногда стандартной базы WPForms недостаточно, и нужно хранить данные в отдельной таблице с уникальной структурой для последующего анализа.
Для этого создадим таблицу при активации плагина или темы и напишем функцию для записи данных:
function wpformsru_create_custom_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'wpforms_custom_data';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
form_id mediumint(9) NOT NULL,
field_name varchar(255) NOT NULL,
field_value text NOT NULL,
submitted_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
register_activation_hook( __FILE__, 'wpformsru_create_custom_table' );
function wpformsru_save_to_custom_table( $fields, $entry, $form_data ) {
global $wpdb;
$table_name = $wpdb->prefix . 'wpforms_custom_data';
foreach ( $fields as $field ) {
$wpdb->insert( $table_name, [
'form_id' => $form_data['id'],
'field_name' => $field['name'],
'field_value' => $field['value'],
'submitted_at' => current_time( 'mysql' ),
] );
}
}
add_action( 'wpforms_process_complete', 'wpformsru_save_to_custom_table', 10, 3 );Так вы получите полный контроль над хранением и последующим использованием ответов.
Заключение
Автоматизация обработки ответов WPForms — мощный инструмент для создания сложных и гибких решений на WordPress. Используя хук wpforms_process_complete и кастомный PHP-код, вы можете интегрировать формы с внешними сервисами, создавать свои уведомления, записывать данные в кастомные таблицы и реализовывать любую бизнес-логику.
Если вы хотите упростить задачу, используйте готовые плагины для интеграций, но для уникальных требований лучше писать собственные функции, как мы рассмотрели в статье.