Автозаполнение форм в WordPress с помощью JavaScript и AJAX

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

Зачем нужно автозаполнение форм и где его применять

Автозаполнение форм улучшает UX, сокращая время на ввод данных. Это актуально для:

  • Регистрационных и контактных форм;
  • Форм оформления заказов (например, WooCommerce);
  • Форм с адресами доставки, где можно подгружать данные по почтовому индексу или городу;
  • Форм поиска с подсказками;
  • Форм обратной связи с повторяющимися полями.

Реализация автозаполнения с помощью AJAX и JS позволяет получать данные с сервера без перезагрузки и обновлять поля динамически.

Подготовка: создание пользовательского AJAX обработчика в WordPress

Для начала создадим AJAX обработчик, который будет отдавать данные для автозаполнения. Добавим следующий код в functions.php вашей темы или в плагин:

add_action('wp_ajax_wpbuy_get_autofill_data', 'wpbuy_get_autofill_data');
add_action('wp_ajax_nopriv_wpbuy_get_autofill_data', 'wpbuy_get_autofill_data');

function wpbuy_get_autofill_data() {
    // Проверка nonce для безопасности
    check_ajax_referer('wpbuy_autofill_nonce', 'security');

    $query = isset($_GET['query']) ? sanitize_text_field($_GET['query']) : '';
    $results = [];

    if (!empty($query)) {
        // Пример: поиск городов по введённой части названия
        $cities = ['Москва', 'Мурманск', 'Минск', 'Магнитогорск', 'Махачкала'];
        foreach ($cities as $city) {
            if (mb_stripos($city, $query) !== false) {
                $results[] = $city;
            }
        }
    }

    wp_send_json_success($results);
}

В этом примере AJAX обработчик фильтрует список городов по введённой строке (query) и возвращает совпадения. В реальном проекте можно заменить массив на запрос к базе или внешнему API.

Подключение скрипта и локализация данных для AJAX

Теперь нужно подключить JavaScript файл и передать ему параметры AJAX вызова. Добавьте в functions.php:

function wpbuy_enqueue_autofill_script() {
    wp_enqueue_script('wpbuy-autofill', get_template_directory_uri() . '/js/wpbuy-autofill.js', ['jquery'], null, true);
    wp_localize_script('wpbuy-autofill', 'wpbuy_autofill_obj', [
        'ajax_url' => admin_url('admin-ajax.php'),
        'nonce' => wp_create_nonce('wpbuy_autofill_nonce'),
    ]);
}
add_action('wp_enqueue_scripts', 'wpbuy_enqueue_autofill_script');

Этот код загружает файл wpbuy-autofill.js из папки темы и передаёт AJAX URL и nonce для безопасности.

Реализация автозаполнения на стороне JavaScript

Создайте файл wpbuy-autofill.js в папке js темы и добавьте следующий код:

jQuery(document).ready(function($) {
    var $input = $('#wpbuy-autofill-input');
    var $list = $('<ul></ul>').addClass('wpbuy-autofill-list').css({
        'border': '1px solid #ccc',
        'max-height': '150px',
        'overflow-y': 'auto',
        'position': 'absolute',
        'background': '#fff',
        'width': $input.outerWidth()
    }).hide();
    $input.after($list);

    $input.on('input', function() {
        var val = $(this).val();
        if (val.length < 2) {
            $list.empty().hide();
            return;
        }

        $.ajax({
            url: wpbuy_autofill_obj.ajax_url,
            data: {
                action: 'wpbuy_get_autofill_data',
                security: wpbuy_autofill_obj.nonce,
                query: val
            },
            dataType: 'json',
            success: function(response) {
                if (response.success && response.data.length) {
                    $list.empty();
                    $.each(response.data, function(i, item) {
                        $('<li></li>').text(item).css({
                            'padding': '5px',
                            'cursor': 'pointer'
                        }).appendTo($list).on('click', function() {
                            $input.val(item);
                            $list.empty().hide();
                        });
                    });
                    $list.show();
                } else {
                    $list.empty().hide();
                }
            }
        });
    });

    $(document).on('click', function(e) {
        if (!$(e.target).closest('.wpbuy-autofill-list, #wpbuy-autofill-input').length) {
            $list.empty().hide();
        }
    });
});

Здесь мы создаём выпадающий список под полем ввода с id wpbuy-autofill-input. При вводе текста отправляем AJAX запрос на сервер, получаем список подходящих значений и отображаем их. По клику на пункт списка он вставляется в поле.

Добавление формы и стилизация

Вставьте в нужное место шаблона или в контент страницы следующий HTML:

<label for="wpbuy-autofill-input">Введите город:</label>
<input type="text" id="wpbuy-autofill-input" autocomplete="off" />

Для улучшения отображения добавьте в файл стилей темы или в <style>:

.wpbuy-autofill-list li:hover {
    background-color: #f0f0f0;
}

Дополнительные советы по безопасности и расширению

Важно всегда проверять nonce в AJAX обработчиках для защиты от CSRF атак. Не стоит слепо доверять пользовательскому вводу — очищайте и валидируйте данные.

Для расширения функционала можно:

  • Добавить поддержку клавиш клавиатуры (стрелки вверх/вниз, Enter) для удобства;
  • Подгружать данные из базы постов или пользовательских таксономий;
  • Использовать данный подход для автозаполнения других полей — телефонов, адресов, категорий;
  • Интегрировать с плагинами, например, с WooCommerce для автозаполнения адресов доставки, либо с плагином Clearfy Pro для улучшения производительности AJAX запросов.

Вывод

Автозаполнение форм с помощью JavaScript и AJAX в WordPress — мощный инструмент для улучшения удобства пользователей и повышения конверсии. Следуя описанным шагам, вы сможете создать лёгкое и расширяемое решение, адаптированное под свои задачи и данные.

Подробное руководство с примерами кода поможет внедрить автозаполнение даже начинающим разработчикам, а опытные смогут расширить функционал под свои проекты.

Если хотите дополнительно оптимизировать работу сайта, обратите внимание на продукты Clearfy Pro для тонкой настройки и ускорения AJAX запросов и общих процессов WordPress.

Автоматическое удаление неактивных вариантов товаров в WooCommerce по расписанию
30.06.2026
Автоматическое удаление старых записей в WordPress через WP-Cron
08.03.2026
Авто удаление спама в комментариях WordPress: лучшие практики и примеры кода
31.01.2026
WooCommerce: как автоматически отключать товары без остатков на складе
16.06.2026
Автоматизация сбора отзывов WooCommerce с Expert Review
05.04.2026