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.