В современном WordPress большинство популярных плагинов для создания контактных форм используют AJAX для отправки данных без перезагрузки страницы. Это удобно, но иногда возникают ситуации, когда AJAX необходимо отключить — например, для отладки, совместимости с другими скриптами или специфической логики сайта.
Почему стоит отключить AJAX в контактной форме WordPress
AJAX помогает улучшить пользовательский опыт, но не всегда работает идеально. Часто встречаются проблемы:
- Конфликты с другими плагинами или темами.
- Ошибки JavaScript, мешающие отправке формы.
- Проблемы с кэшированием и отображением сообщений об ошибках.
- Необходимость полной перезагрузки страницы для запуска определённых скриптов.
В таких случаях отключение AJAX — самый простой выход.
Типичные плагины для контактных форм и способы отключения AJAX
Рассмотрим примеры популярных плагинов и как в них отключить AJAX.
Contact Form 7
Contact Form 7 по умолчанию использует AJAX для отправки форм. Чтобы отключить AJAX, можно убрать скрипт, который делает отправку асинхронной.
Добавьте следующий код в functions.php вашей темы PremiumWP:
function premiumwp_disable_cf7_ajax() {
if (function_exists('wpcf7_enqueue_scripts')) {
wp_dequeue_script('contact-form-7');
wp_deregister_script('contact-form-7');
}
}
add_action('wp_print_scripts', 'premiumwp_disable_cf7_ajax', 100);Однако этот способ отключает весь скрипт плагина, что может привести к неработоспособности формы. Более корректный метод — переопределить JavaScript, отключив AJAX-отправку:
function premiumwp_cf7_disable_ajax_script() {
wp_add_inline_script('contact-form-7', 'document.addEventListener( "wpcf7invalid", function(event) { event.preventDefault(); }, false );', 'after');
}
add_action('wp_enqueue_scripts', 'premiumwp_cf7_disable_ajax_script');Но чаще рекомендуют использовать хук JavaScript, чтобы отменить AJAX-отправку, либо заменить форму на простую HTML-форму.
WPForms
В WPForms отключить AJAX просто: в настройках формы есть опция «Disable AJAX form submission» (Отключить отправку через AJAX). Просто активируйте её.
Gravity Forms
Для Gravity Forms AJAX отключается через настройку каждой формы: в разделе «Form Settings» уберите галочку «Enable AJAX».
Ручное отключение AJAX в контактной форме WordPress
Если плагин не предоставляет явной опции, можно самостоятельно отключить AJAX через фильтры и скрипты.
Пример универсального подхода для Contact Form 7: отключить стандартный скрипт AJAX и заменить его на простую отправку формы.
function premiumwp_replace_cf7_ajax() {
if (wp_script_is('contact-form-7', 'enqueued')) {
wp_dequeue_script('contact-form-7');
wp_deregister_script('contact-form-7');
}
wp_enqueue_script('premiumwp-cf7-noajax', get_template_directory_uri() . '/js/cf7-noajax.js', ['jquery'], '1.0', true);
}
add_action('wp_enqueue_scripts', 'premiumwp_replace_cf7_ajax', 99);В файле cf7-noajax.js можно прописать простой скрипт для отправки формы с перезагрузкой страницы:
jQuery(document).ready(function($) {
$('form.wpcf7-form').attr('onsubmit', 'return true;');
});Советы по тестированию и отладке после отключения AJAX
После отключения AJAX обязательно проверьте:
- Форма корректно отправляется и данные доходят на почту.
- Отображаются сообщения об ошибках и успешной отправке.
- Совместимость с другими скриптами и плагинами.
- Отсутствие конфликтов в консоли браузера.
Для ускорения решения проблем с формами рекомендуем использовать плагин Expert Review — он поможет автоматически анализировать и устранять ошибки на сайте.
Альтернативные варианты: использование плагинов без AJAX
Если AJAX мешает, можно рассмотреть плагины, которые изначально не используют AJAX, либо делают это опционально. Например:
- Contact Form by WPForms — с простой настройкой отключения AJAX.
- Formidable Forms — позволяет детально настраивать логику отправки.
- Caldera Forms — даёт возможность гибко управлять скриптами.
Выбор плагина зависит от ваших задач и необходимости интеграции с другими сервисами.
Выводы по отключению AJAX в контактных формах WordPress
Отключение AJAX — частый запрос у разработчиков, которые хотят устранить конфликты или изменить поведение формы. Главное — делать это аккуратно, тестируя все сценарии отправки.
Используйте приведённые выше методы и примеры кода с приставкой premiumwp в названиях функций для удобства поддержки и чтобы не было конфликтов с другими плагинами.
Подробнее о плагинах и инструментах для WordPress можно узнать на WPShop.ru.