Почему возникает задача интеграции WPForms с SOAP API?
Часто клиенты и компании используют SOAP-сервисы для обмена данными с внутренними учетными системами, CRM и ERP. WPForms отлично работает с REST API, но интеграция с SOAP требует дополнительной настройки, так как WordPress и WPForms не имеют встроенной поддержки SOAP. В статье разберем, как правильно отправлять данные из WPForms в SOAP-сервис, отлавливать ошибки и проверять результат.
Диагностика проблемы: не отправляются данные из WPForms в SOAP API
Типичные симптомы:
- формы корректно заполняются, но данные не доходят до SOAP-сервиса;
- ошибки PHP или пустые ответы при вызове SOAP;
- письма с уведомлениями приходят, но интеграция с SOAP не работает;
- отсутствие логов или непонятные ошибки в журнале сервера.
Для диагностики нужно:
- включить WP_DEBUG и WP_DEBUG_LOG в
wp-config.php; - использовать отладочные сообщения в callback-функциях WPForms;
- проверить доступность SOAP-сервиса через сторонние инструменты (SoapUI, Postman с SOAP-поддержкой);
- убедиться, что PHP расширение
soapустановлено и активно; - проверить правильность WSDL URL и параметры запроса.
Пошаговое решение: интеграция WPForms с SOAP API
1. Подключение PHP SOAP-клиента
Убедитесь, что на сервере включено расширение soap. В Linux можно проверить через php -m | grep soap или в файле phpinfo().
2. Создание функции обработки отправки формы
Используем хук wpforms_process_complete, который срабатывает после успешной отправки формы. В этой функции формируем SOAP-запрос.
add_action('wpforms_process_complete', 'send_wpform_data_to_soap', 10, 4);function send_wpform_data_to_soap($fields, $entry, $form_data, $entry_id) { $wsdl = 'https://example.com/service?wsdl'; try { $client = new SoapClient($wsdl, ['trace' => 1, 'exceptions' => true]); $params = [ 'Name' => sanitize_text_field($fields[1]['value']), 'Email' => sanitize_email($fields[2]['value']), 'Message' => sanitize_textarea_field($fields[3]['value']), ]; $response = $client->SubmitForm($params); error_log('SOAP request: ' . $client->__getLastRequest()); error_log('SOAP response: ' . $client->__getLastResponse()); } catch (SoapFault $e) { error_log('SOAP Error: ' . $e->getMessage()); }}Важный момент: индексы $fields соответствуют ID полей в форме, их нужно подставлять по вашей форме.
3. Обработка ошибок и логирование
Для отладки запросов используйте методы __getLastRequest() и __getLastResponse() SOAP клиента, выводите ошибки через error_log. Это поможет понять, корректно ли сформирован запрос и что возвращает сервис.
4. Проверка корректности данных
До отправки убедитесь, что данные проходят валидацию WPForms. Для дополнительной проверки можно добавить фильтры wpforms_process_validate или использовать собственную валидацию полей.
Проверка результата после внедрения
- Отправьте тестовую форму с реальными значениями.
- Проверьте логи
wp-content/debug.logна наличие SOAP-запроса и ответа. - Убедитесь в получении данных на стороне SOAP-сервиса (через логи сервиса или админку).
- Проверьте, что форма успешно отправляется без ошибок для пользователя.
Частые ошибки и как их исправить
- Ошибка подключения к SOAP: Проверьте URL WSDL, наличие PHP SOAP, доступность сервиса из сервера.
- Неверные параметры запроса: Сверьте структуру запроса с документацией SOAP-сервиса.
- Проблемы с кодировкой: Используйте
utf8_encodeили аналогичные функции для текстовых данных. - Отсутствие логов: Включите
WP_DEBUGи проверьте права на запись в папкуwp-content.
Практические советы по безопасности и производительности
- Используйте
sanitize_text_field,sanitize_emailи другие функции очистки данных перед отправкой. - Обрабатывайте исключения
SoapFault, чтобы не прерывать выполнение скрипта. - Не храните SOAP-ключи и пароли в коде, используйте
wp-config.phpили защищенные опции. - Добавьте кэширование WSDL, чтобы уменьшить нагрузку на сеть.
Сравнение вариантов интеграции с SOAP API
| Способ | Плюсы | Минусы |
|---|---|---|
| Прямой PHP SoapClient в WPForms hook | Гибкость, полный контроль, бесплатно | Требует знаний SOAP, возможны ошибки из-за структуры запроса |
| Промежуточный REST-сервис, транслирующий SOAP | Проще интегрировать, использовать REST-методы WPForms | Дополнительный сервис, задержки, поддержка |
| Плагины интеграции (если есть) | Удобство настройки, поддержка | Редкие, платные, возможные ограничения |