Как сделать отзывную AJAX-форму обработки на WordPress

В современных проектах на WordPress часто возникает необходимость создавать формы, которые обрабатываются без перезагрузки страницы, то есть с помощью AJAX. Это улучшает взаимодействие с пользователем, ускоряет работу сайта и уменьшает нагрузку на сервер. В этой статье мы подробно разберём, как сделать отзывную AJAX-форму обработки на WordPress с примером кода и разъяснениями.

Что такое AJAX-форма и зачем она нужна

AJAX (Asynchronous JavaScript and XML) — это технология, позволяющая отправлять запросы на сервер и получать ответы без перезагрузки страницы. В контексте WordPress AJAX-форма позволяет пользователю заполнить форму, отправить данные, получить мгновенный ответ (например, сообщение об успехе или ошибке) и продолжить работу на странице.

Преимущества AJAX-форм:

  • Отсутствие перезагрузки страницы — пользователь не теряет контекст.
  • Быстрая обратная связь об ошибках или успешной отправке.
  • Возможность динамически обновлять содержимое страницы в ответ на действия пользователя.

Теперь рассмотрим, как реализовать такую форму на WordPress, используя встроенные хуки и функции.

Создание простой AJAX-формы в WordPress

HTML-разметка формы

Для начала создадим простую форму с полем для ввода имени и кнопкой отправки. Добавим её в любое место темы или через шорткод.

<form id="wptool-ajax-form" method="post">
  <label for="name">Ваше имя:</label>
  <input type="text" id="name" name="name" required />
  <input type="submit" value="Отправить" />
  <div id="wptool-form-message"></div>
</form>

JavaScript для отправки формы по AJAX

Для отправки формы без перезагрузки создадим скрипт, который будет перехватывать событие submit, собирать данные и отправлять их на сервер с помощью AJAX-запроса.

jQuery(document).ready(function($) {
  $('#wptool-ajax-form').on('submit', function(e) {
    e.preventDefault();
    var name = $('#name').val();
    var data = {
      action: 'wptool_ajax_form_submit', // имя действия для WordPress
      name: name,
      security: wptool_ajax_object.nonce // nonce для безопасности
    };
    $.post(wptool_ajax_object.ajax_url, data, function(response) {
      $('#wptool-form-message').html(response.data.message);
      if(response.success) {
        $('#wptool-ajax-form')[0].reset();
      }
    });
  });
});

Обратите внимание, что мы используем wptool_ajax_object — объект, который нужно зарегистрировать в PHP, чтобы передать в JS URL для AJAX и nonce.

Обработка AJAX-запроса на стороне WordPress

Теперь создадим PHP-функцию, которая будет обрабатывать запрос, проверять nonce и возвращать ответ.

function wptool_ajax_form_submit() {
  check_ajax_referer('wptool_ajax_nonce', 'security');
  $name = isset($_POST['name']) ? sanitize_text_field($_POST['name']) : '';
  if(empty($name)) {
    wp_send_json_error(['message' => 'Пожалуйста, введите имя.']);
  }
  // Здесь можно добавить любую логику обработки, например, запись в базу или отправку письма

  wp_send_json_success(['message' => 'Спасибо, ' . esc_html($name) . ', ваша форма отправлена.']);
}
add_action('wp_ajax_wptool_ajax_form_submit', 'wptool_ajax_form_submit');
add_action('wp_ajax_nopriv_wptool_ajax_form_submit', 'wptool_ajax_form_submit');

Регистрация скриптов и локализация AJAX-переменных

Чтобы JavaScript получил необходимые данные для AJAX, нужно зарегистрировать и подключить скрипт, а также локализовать объект с URL и nonce.

function wptool_enqueue_scripts() {
  wp_enqueue_script('wptool-ajax-script', get_template_directory_uri() . '/js/wptool-ajax.js', ['jquery'], null, true);

  wp_localize_script('wptool-ajax-script', 'wptool_ajax_object', [
    'ajax_url' => admin_url('admin-ajax.php'),
    'nonce'    => wp_create_nonce('wptool_ajax_nonce')
  ]);
}
add_action('wp_enqueue_scripts', 'wptool_enqueue_scripts');

Использование готовых плагинов для AJAX-форм

Если вы предпочитаете готовые решения, есть несколько популярных плагинов для создания AJAX-форм в WordPress, которые можно настроить без глубоких знаний кода:

  • Contact Form 7 — популярный плагин с поддержкой AJAX по умолчанию. Можно расширить функционал с помощью дополнительных дополнений.
  • WPForms — удобный визуальный конструктор форм с поддержкой AJAX и множеством интеграций.
  • My Popup от WPShop — плагин для создания попап-форм с поддержкой AJAX, который можно использовать для сбора контактов и отзывов.

Однако создание собственной AJAX-формы даёт максимальную гибкость и контроль над процессом.

Отладка и проверка работоспособности AJAX-формы

При создании AJAX-форм важно убедиться, что все части работают корректно:

  • Проверьте правильность подключения скрипта и локализации данных.
  • Убедитесь, что nonce создаётся и передаётся корректно, иначе запросы будут отклонены.
  • Используйте инструменты разработчика браузера для просмотра запросов в сети и отладочных сообщений.
  • Обрабатывайте все возможные ошибки и выводите понятные сообщения пользователю.

Итог

Создание отзывной AJAX-формы в WordPress — полезный навык, который позволяет улучшить UX и гибко обрабатывать пользовательские данные. В статье приведён полный пример с HTML, JavaScript и PHP-кодом для реализации такой формы. При необходимости можно расширить функционал, добавив валидацию, интеграцию с базой данных или отправку писем.

Если хотите быстро внедрить готовое решение с удобным интерфейсом и поддержкой AJAX, рекомендуем ознакомиться с плагином My Popup на wpshop.ru.

Как создать автоматический лог по ошибкам в WordPress с применением кода
03.04.2026
Как создать автоматические уведомления в WordPress с помощью хуков и AJAX
10.03.2026
WooCommerce: автоматическое изменение цен при изменении атрибутов товара
13.06.2026
Как создать динамическое отображение товара WooCommerce по параметрам
09.01.2026
Как автоматизировать создание копий публикаций в WordPress с помощью кода
24.12.2025