wpforms.ru wordpress WPForms.ru

Автоматизация обработки ответов в WPForms с помощью хуков и кастомного кода

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-код, вы можете интегрировать формы с внешними сервисами, создавать свои уведомления, записывать данные в кастомные таблицы и реализовывать любую бизнес-логику.

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше