AJAX-отправка форм в WPForms позволяет значительно улучшить пользовательский опыт, поскольку форма отправляется без перезагрузки страницы. Однако иногда возникают ошибки, связанные именно с AJAX-запросами, которые сложно отследить и устранить. В этой статье разберём самые распространённые проблемы с AJAX в WPForms и методы их отладки и решения.
Как работает AJAX отправка в WPForms
Перед тем как искать проблему, важно понимать, как WPForms реализует AJAX. При отправке формы JavaScript-сценарий перехватывает событие отправки и посылает данные формы в фоновом режиме на сервер через wp-admin/admin-ajax.php. Сервер обрабатывает данные и возвращает ответ, который затем отображается пользователю.
Если на любом из этапов возникает ошибка — форма может не отправляться, появляться сообщения об ошибках или форма зависать.
Важные моменты для проверки:
- Подключается ли скрипт wpforms-ajax.js?
- Нет ли конфликтов с другими плагинами или темой?
- Корректно ли возвращается JSON из AJAX-обработчика?
Основные причины проблем с AJAX отправкой в WPForms
1. Конфликты JavaScript
Частая причина — другие скрипты на сайте конфликтуют с WPForms. Это могут быть ошибки в пользовательских скриптах или несоответствие версий jQuery.
Для проверки откройте консоль браузера (F12 → Console) и посмотрите, есть ли ошибки JavaScript. Ошибки вида Uncaught TypeError или jQuery is not defined уже подскажут направление.
Решение: отключите по очереди плагины и смените тему на стандартную (например, Twenty Twenty-Three), чтобы локализовать конфликт.
2. Ошибки PHP в AJAX-обработчике
Если сервер возвращает ошибку 500 или пустой ответ, возможно, в PHP-коде есть ошибки. Особенно если вы добавляли кастомные хуки или фильтры для WPForms.
Для проверки включите вывод ошибок в WordPress, добавив в wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Далее проверьте лог ошибок в wp-content/debug.log.
3. Неправильные настройки AJAX URL
Иногда URL для AJAX-запроса в скриптах может быть некорректным из-за кеширования или настроек CDN.
Проверьте, что в исходном коде страницы присутствует правильная переменная JavaScript wpforms_ajax.ajaxurl, указывающая на wp-admin/admin-ajax.php.
Практическое решение: кастомный AJAX-хук для WPForms
Если нужно добавить свою обработку данных при AJAX-отправке формы, можно использовать следующий пример кода:
add_action('wpforms_ajax_submit', 'wpformsru_handle_ajax_submission', 10, 1);
function wpformsru_handle_ajax_submission($form_data) {
// Здесь $form_data — массив с данными формы
$fields = $form_data['fields'];
// Пример: логирование данных
error_log('Отправлена форма ID: ' . $form_data['id']);
error_log(print_r($fields, true));
// Возвращаем успешный ответ
wp_send_json_success(['message' => 'Данные успешно обработаны']);
}
Этот код нужно добавить в functions.php вашей темы или в отдельный плагин. Он позволит отследить, что данные доходят до сервера и обработать их по-своему.
Использование плагинов для отладки и улучшения AJAX в WPForms
Рекомендуется также использовать следующие плагины для диагностики и оптимизации:
- Query Monitor — позволяет видеть AJAX-запросы, ошибки PHP и медленные запросы на странице.
- Clearfy Pro — оптимизация и отключение лишних скриптов, что помогает избежать конфликтов.
- WP Rocket — если используется кеширование и CDN, важно правильно настроить исключения для AJAX-запросов.
Как отключить AJAX в WPForms для тестирования
Если неполадки с AJAX не удаётся быстро устранить, можно временно отключить AJAX-субмит в настройках формы:
- Откройте редактор формы в WPForms.
- Перейдите во вкладку Настройки → Общее.
- Снимите галочку с Enable AJAX form submission.
Так вы убедитесь, что проблема именно в AJAX. Но помните, что UX ухудшится из-за перезагрузки страницы.
Полезные советы для предотвращения проблем с AJAX в WPForms
- Всегда тестируйте формы на чистой установке без сторонних плагинов.
- Регулярно обновляйте WordPress, WPForms и все плагины.
- Используйте инструменты браузера для мониторинга сетевых запросов (Network) и консоли ошибок.
- Настраивайте исключения в кеширующих плагинах для AJAX-запросов WPForms.
- Для сложных кастомизаций используйте хуки WPForms, чтобы не ломать стандартную логику.
Если хотите подробнее узнать о кастомных интеграциях и автоматизации с WPForms, рекомендую посетить страницу плагина WPForms на WPSHOP.RU.