wpforms.ru wordpress WPForms.ru

Интеграция WPForms с webhook’ами и обработка данных на сервере

WPForms — один из самых популярных плагинов для создания форм в WordPress. В этой статье мы рассмотрим, как сделать интеграцию WPForms с webhook’ами для передачи данных на внешний сервер, а также как обрабатывать эти данные программно на стороне WordPress или внешнего API. Такой подход полезен для кастомных решений, CRM-систем, автоматизации и синхронизации данных.

Что такое webhook и зачем его использовать с WPForms

Webhook — это способ для приложений автоматически отправлять данные в режиме реального времени на указанный URL. В отличие от классического опроса API, webhook инициирует отправку при наступлении события (например, отправка формы). Это позволяет мгновенно получать данные и обрабатывать их.

WPForms по умолчанию не имеет встроенной поддержки webhook, но мы можем реализовать отправку данных из формы на любой URL с помощью хуков и кастомного кода. Это особенно полезно, когда нужно интегрировать WPForms с CRM, системами рассылок или собственными сервисами.

Например, можно автоматически отправлять заполненные данные формы на https://example.com/api/receive и обрабатывать их там.

Как создать отправку данных WPForms на webhook через хук wpforms_process_complete

WPForms предоставляет хук wpforms_process_complete, который срабатывает после успешной отправки формы. Используем его для отправки данных на внешний webhook.

Добавьте следующий код в файл functions.php вашей темы или в кастомный плагин:

add_action('wpforms_process_complete', 'wpforms_send_to_webhook', 10, 4);
function wpforms_send_to_webhook($fields, $entry, $form_data, $entry_id) {
    $webhook_url = 'https://example.com/api/receive'; // Замените на ваш URL webhook

    // Формируем массив данных для отправки
    $data = [];
    foreach ($fields as $field) {
        $data[$field['name']] = $field['value'];
    }

    // Подготавливаем аргументы запроса
    $args = [
        'body'    => json_encode($data),
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'method'  => 'POST',
        'timeout' => 15,
    ];

    // Отправляем POST-запрос
    $response = wp_remote_post($webhook_url, $args);

    // Логируем ошибку если есть
    if (is_wp_error($response)) {
        error_log('WPForms webhook error: ' . $response->get_error_message());
    }
}

Этот код собирает все поля формы в ассоциативный массив и отправляет их в формате JSON на указанный URL методом POST. В случае ошибки она записывается в лог.

Обратите внимание, что для надежности стоит проверять статус ответа и, если нужно, реализовывать повторные попытки отправки.

Обработка полученных данных webhook’а на внешнем сервере

Предположим, у вас есть внешний сервер на PHP, который принимает данные с WPForms. Вот пример простого обработчика webhook:

<?php
// Получаем необработанные POST данные
$json = file_get_contents('php://input');

// Декодируем JSON
$data = json_decode($json, true);

// Проверка на валидность данных
if (!$data) {
    http_response_code(400);
    echo 'Invalid JSON';
    exit;
}

// Например, сохраняем данные в файл или БД
file_put_contents('form_data.log', print_r($data, true), FILE_APPEND);

// Отвечаем 200 OK
http_response_code(200);
echo 'Data received';
?>

Такой обработчик принимает POST-запрос с JSON, декодирует его и сохраняет в лог. В реальном проекте сюда можно добавить запись в базу, отправку уведомлений, интеграцию с CRM и т.п.

Как обработать webhook прямо в WordPress: добавляем REST API endpoint

Если вы хотите принимать webhook запросы прямо в WordPress для дальнейшей обработки, вы можете создать собственный REST API endpoint.

Добавьте в functions.php следующий код:

add_action('rest_api_init', function () {
    register_rest_route('wpforms/v1', '/webhook', [
        'methods' => 'POST',
        'callback' => 'wpforms_process_webhook_data',
        'permission_callback' => '__return_true', // можно добавить проверку авторизации
    ]);
});

function wpforms_process_webhook_data(WP_REST_Request $request) {
    $data = $request->get_json_params();

    if (empty($data)) {
        return new WP_Error('no_data', 'No data received', ['status' => 400]);
    }

    // Обработка данных
    // Например, записать в базу, отправить уведомление и т.д.

    // Для примера просто логируем данные
    error_log('Webhook data received: ' . print_r($data, true));

    return ['success' => true, 'message' => 'Data processed'];
}

Теперь WPForms можно настроить на отправку webhook на адрес https://your-site.ru/wp-json/wpforms/v1/webhook.

Использование плагинов для webhook и интеграций с WPForms

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

  • WPForms Zapier Addon — позволяет подключать WPForms к Zapier и дальше к множеству сервисов, поддерживающих webhook.
  • WP Webhooks — плагин для приема и отправки данных через webhook, можно связать с WPForms через кастомный код.
  • Uncanny Automator — плагин для автоматизации, поддерживает WPForms и различные внешние API, включая webhook.

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

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

При работе с webhook важно учитывать безопасность:

  • Используйте проверку секретного ключа (токена) в заголовках запроса, чтобы убедиться, что запрос пришел от WPForms или доверенного сервиса.
  • Ограничьте доступ к REST API endpoint по IP или другим параметрам.
  • Логируйте ошибки и успешные вызовы для отладки.
  • Тестируйте интеграцию на тестовом сайте перед продакшеном.

Для отладки отправки webhook можно использовать сервисы типа webhook.site, куда можно направить тестовые запросы и посмотреть их содержимое.

Итоги

Интеграция WPForms с webhook — мощный инструмент для расширения возможностей форм и автоматизации обработки данных. С помощью хука wpforms_process_complete вы можете быстро отправлять данные на внешний сервис, а реализация собственного REST API в WordPress даст гибкость для внутренней обработки.

Используйте примеры кода и рекомендации из статьи, чтобы реализовать надежный и безопасный обмен данными, а для сложных интеграций рассмотрите применение готовых плагинов. Это позволит вывести работу с WPForms на новый уровень и автоматизировать рутинные задачи.

Больше полезных плагинов и инструментов для WordPress вы найдете на WPShop.ru.

×

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

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

пишет статьи

готовит SEO

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

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