Как создать автозаполняемое поле в WordPress

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

Почему стоит использовать автозаполнение в WordPress

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

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

Для разработчика реализация автозаполнения — это хороший способ показать умение работать с AJAX, REST API и JavaScript внутри WordPress.

Основные шаги создания автозаполняемого поля в WordPress

Для реализации нам понадобится:

  • Создать поле ввода в форме;
  • Подключить jQuery UI Autocomplete или аналог;
  • Написать AJAX-запрос к серверу при вводе текста;
  • Обработать запрос на сервере — вернуть подходящие варианты;
  • Вывести подсказки в интерфейсе.

Рассмотрим каждый шаг подробно с примерами.

1. Добавляем поле ввода в форму

В шаблоне WordPress добавьте обычный input с уникальным id:

<input type="text" id="wpexperts-autocomplete" name="search_item" placeholder="Введите название..." />

Это поле мы будем превращать в автозаполняемое.

2. Подключаем jQuery UI Autocomplete

WordPress уже содержит jQuery, но для autocomplete нам понадобится jQuery UI. Добавим его через функцию enqueue в functions.php:

function wpexperts_enqueue_scripts() {
    wp_enqueue_script('jquery-ui-autocomplete');
    wp_enqueue_style('jquery-ui-css', 'https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css');
    wp_enqueue_script('wpexperts-autocomplete-script', get_template_directory_uri() . '/js/autocomplete.js', array('jquery','jquery-ui-autocomplete'), '1.0', true);
    wp_localize_script('wpexperts-autocomplete-script', 'wpexperts_ajax_object', array(
        'ajax_url' => admin_url('admin-ajax.php'),
        'nonce' => wp_create_nonce('wpexperts_autocomplete_nonce')
    ));
}
add_action('wp_enqueue_scripts', 'wpexperts_enqueue_scripts');

В этом коде мы подключаем jQuery UI Autocomplete, стили и собственный скрипт autocomplete.js, который создадим ниже. Также передаем ajax_url и nonce для безопасности.

3. Создаем JavaScript для вызова автозаполнения

В файле js/autocomplete.js напишем следующий код:

jQuery(document).ready(function($) {
    $('#wpexperts-autocomplete').autocomplete({
        source: function(request, response) {
            $.ajax({
                url: wpexperts_ajax_object.ajax_url,
                method: 'POST',
                dataType: 'json',
                data: {
                    action: 'wpexperts_autocomplete_search',
                    nonce: wpexperts_ajax_object.nonce,
                    term: request.term
                },
                success: function(data) {
                    response(data);
                },
                error: function() {
                    response([]);
                }
            });
        },
        minLength: 2
    });
});

Здесь при вводе минимум двух символов отправляется AJAX-запрос на сервер, который должен вернуть массив подходящих вариантов.

Обработка AJAX-запроса на сервере: поиск данных

Теперь создадим функцию в functions.php, которая будет обрабатывать запрос и возвращать результаты. В качестве примера будем искать по названиям записей постов типа "post".

function wpexperts_autocomplete_search_callback() {
    check_ajax_referer('wpexperts_autocomplete_nonce', 'nonce');

    $term = isset($_POST['term']) ? sanitize_text_field($_POST['term']) : '';
    if (empty($term)) {
        wp_send_json([]);
        wp_die();
    }

    $args = array(
        'post_type' => 'post',
        'posts_per_page' => 10,
        's' => $term,
        'post_status' => 'publish'
    );
    $query = new WP_Query($args);

    $results = array();
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $results[] = get_the_title();
        }
        wp_reset_postdata();
    }

    wp_send_json($results);
    wp_die();
}
add_action('wp_ajax_wpexperts_autocomplete_search', 'wpexperts_autocomplete_search_callback');
add_action('wp_ajax_nopriv_wpexperts_autocomplete_search', 'wpexperts_autocomplete_search_callback');

Функция получает термин поиска, выполняет WP_Query для поиска постов с похожим названием и возвращает массив названий.

Расширяем функционал: автозаполнение с ID и выбор результата

Часто полезно не просто показывать текст, а передавать ID выбранного элемента. Для этого изменим функцию на сервере, чтобы возвращать массив с label и value:

$results[] = array(
    'label' => get_the_title(),
    'value' => get_the_ID()
);

И на клиенте изменим обработчик выбора:

select: function(event, ui) {
    $('#wpexperts-autocomplete').val(ui.item.label);
    $('#hidden_post_id').val(ui.item.value); // скрытое поле для ID
    return false;
}
<

Для этого добавьте скрытое поле рядом с input:

<input type="hidden" id="hidden_post_id" name="post_id" />

Примеры популярных плагинов для автозаполнения в WordPress

Если не хочется писать код, можно использовать готовые решения:

  • Autocomplete WooCommerce: автозаполнение для поиска товаров;
  • SearchWP Live Ajax Search: мощный AJAX поиск с автозаполнением;
  • FacetWP: фильтры и автозаполнение для сложных каталогов;
  • WP AutoComplete: простой плагин для любых полей.

Все эти плагины облегчают жизнь, но иногда лучше написать свой код для максимальной кастомизации.

Советы по оптимизации и безопасности

При работе с автозаполнением важно:

  • Использовать nonce для защиты AJAX-запросов;
  • Ограничивать количество результатов для снижения нагрузки;
  • Кешировать часто запрашиваемые данные, например, с помощью Transients API;
  • Проводить валидацию и санитизацию входящих данных;
  • Обрабатывать ошибки корректно, чтобы не сломать интерфейс.

Эти меры позволят избежать проблем с безопасностью и производительностью.

Заключение

Создать автозаполняемое поле в WordPress можно достаточно просто, используя jQuery UI Autocomplete и AJAX. Такой функционал улучшает интерфейс сайта и повышает удобство пользователей. В статье подробно показано, как реализовать этот механизм с нуля и расширить его для передачи ID выбранного элемента. Рекомендуется также изучить готовые плагины для автозаполнения, чтобы выбрать оптимальный вариант под свои задачи.

Как сделать автоматический отзыв в WordPress после покупки
22.02.2026
Как создать адаптивный и ленивый загрузчик изображений в WordPress
08.03.2026
Как использовать внешние шаблоны в WordPress без рисков
03.04.2026
Как создать собственный шорткод в WordPress
01.11.2025
Как настроить отключение REST API в WordPress для неавторизованных пользователей
15.12.2025