Как создать выпадающий список с подгрузкой в WordPress

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

Почему выпадающий список с подгрузкой лучше стандартного селекта

Стандартный HTML select ограничен в функциональности и плохо подходит, если вариантов слишком много. Например, если нужно отобразить тысячи элементов, браузер будет тормозить, а пользователь — теряться в списке.

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

  • Значительно уменьшить время загрузки страницы;
  • Существенно повысить удобство пользователя за счет автодополнения;
  • Сократить использование ресурсов сервера и клиента;
  • Реализовать сложные фильтры и поиск по мета-полям или кастомным таксономиям.

Для WordPress это особенно актуально при работе с крупными базами постов, товаров WooCommerce, пользователями и другими сущностями.

Реализация выпадающего списка с AJAX в WordPress: пошаговое руководство

Для примера создадим простой выпадающий список, который подгружает посты из определенной категории по мере набора текста.

1. Подключаем скрипты и стили

Добавим в файл functions.php темы следующий код для подключения jQuery UI Autocomplete и нашего скрипта:

function hueman_enqueue_autocomplete_scripts() {
    wp_enqueue_script('jquery-ui-autocomplete');
    wp_enqueue_script('hueman-autocomplete', get_template_directory_uri() . '/js/hueman-autocomplete.js', ['jquery', 'jquery-ui-autocomplete'], null, true);
    wp_localize_script('hueman-autocomplete', 'hueman_ajax_object', [
        'ajax_url' => admin_url('admin-ajax.php'),
        'nonce' => wp_create_nonce('hueman_autocomplete_nonce')
    ]);
}
add_action('wp_enqueue_scripts', 'hueman_enqueue_autocomplete_scripts');

Обратите внимание, что скрипт мы создадим в папке темы в файле js/hueman-autocomplete.js.

2. Создаем AJAX обработчик в PHP

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

function hueman_ajax_autocomplete() {
    check_ajax_referer('hueman_autocomplete_nonce', 'nonce');

    $search = isset($_GET['term']) ? sanitize_text_field($_GET['term']) : '';
    $args = [
        'post_type' => 'post',
        'posts_per_page' => 10,
        's' => $search
    ];

    $query = new WP_Query($args);
    $results = [];

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $results[] = [
                'label' => get_the_title(),
                'value' => get_the_ID()
            ];
        }
        wp_reset_postdata();
    }

    wp_send_json($results);
}
add_action('wp_ajax_hueman_autocomplete', 'hueman_ajax_autocomplete');
add_action('wp_ajax_nopriv_hueman_autocomplete', 'hueman_ajax_autocomplete');

3. Создаем JavaScript для подгрузки

В файле js/hueman-autocomplete.js добавим следующий код:

jQuery(document).ready(function($) {
    $('#hueman-autocomplete-input').autocomplete({
        source: function(request, response) {
            $.ajax({
                url: hueman_ajax_object.ajax_url,
                dataType: 'json',
                data: {
                    action: 'hueman_autocomplete',
                    term: request.term,
                    nonce: hueman_ajax_object.nonce
                },
                success: function(data) {
                    response(data);
                }
            });
        },
        minLength: 2,
        select: function(event, ui) {
            console.log('Selected ID:', ui.item.value);
        }
    });
});

4. Добавляем HTML на страницу

В нужном шаблоне или через шорткод выводим поле ввода:

<input type="text" id="hueman-autocomplete-input" placeholder="Начните вводить название поста" />

Использование плагинов для реализации выпадающих списков с подгрузкой

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

  • Select2 — улучшенный выпадающий список с поддержкой AJAX, мультивыбором и кастомизацией. Для WordPress есть несколько интеграций, например, Select2 WordPress Plugin.
  • WPAutocomplete — плагин для добавления автозаполнения в поля форм, совместим с Contact Form 7 и другими.
  • Advanced Custom Fields (ACF) с плагином ACF: Select2 — для кастомных полей с подгрузкой значений.

Эти плагины отлично подходят для сложных проектов, где нужна гибкая настройка и минимальный код.

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

При реализации подгрузки данных через AJAX важно учесть:

  • Обязательно использовать check_ajax_referer для защиты от CSRF.
  • Санитизировать все входящие данные, чтобы избежать SQL-инъекций и XSS.
  • Ограничивать количество результатов, чтобы не перегружать сервер и клиент.
  • Использовать кэширование, если данные меняются нечасто.

Заключение

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

Для подробностей и готовых решений рекомендуем также посмотреть Select2 WordPress Plugin на WPSHOP, который значительно упрощает внедрение подобных списков.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как использовать Multiple Checkout в WooCommerce для разных типов клиентов
17.04.2026
Как отключить Gutenberg и вернуть классический редактор WordPress
14.04.2026
Как автоматизировать управление категориями в WordPress с помощью кода
16.02.2026
Как создать динамические таблицы в WordPress с помощью шорткодов
20.11.2025
Как создать адаптивный блок в WordPress с помощью кастомного кода и плагинов
03.12.2025
×
ABC
Pagination
Улучшай навигацию на сайте за секунды!
-15%

на ABC Pagination плагин WordPress

Сделать красиво ⋙