Автозаполняемая форма поиска по меткам в WordPress: практическое руководство

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

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

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

  • Уменьшить количество ошибок при вводе
  • Повысить скорость поиска за счёт подсказок
  • Улучшить UX и удержать посетителя на сайте
  • Сделать поиск более точным и релевантным

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

Реализация автозаполняемой формы поиска по меткам: пример с AJAX и jQuery

Для начала создадим кастомное текстовое поле с автозаполнением, которое будет подгружать список меток из базы по мере ввода. Для этого используем AJAX, а также REST API WordPress для получения меток.

1. Создание REST API эндпоинта для получения меток

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

add_action('rest_api_init', function () {
    register_rest_route('wpfinder/v1', '/tags', array(
        'methods' => 'GET',
        'callback' => 'wpfinder_get_tags_autocomplete',
        'permission_callback' => '__return_true',
    ));
});

function wpfinder_get_tags_autocomplete(<?php $request) {
    $search = $request->get_param('term');
    if (empty($search)) {
        return [];
    }
    $tags = get_terms([
        'taxonomy' => 'post_tag',
        'hide_empty' => false,
        'search' => sanitize_text_field($search),
        'number' => 10
    ]);
    $results = [];
    foreach ($tags as $tag) {
        $results[] = ['id' => $tag->term_id, 'text' => $tag->name];
    }
    return $results;
}

Этот код регистрирует REST маршрут /wp-json/wpfinder/v1/tags?term=ваш_запрос, который возвращает до 10 меток, совпадающих с поисковым словом.

2. Добавление HTML формы поиска

В нужном месте темы добавьте HTML код формы с инпутом:

<form method="get" action="<?php echo esc_url(home_url('/')); ?>" id="wpfinder-tag-search">
    <input type="text" name="tag" id="wpfinder-tag-input" placeholder="Введите метку..." autocomplete="off" />
    <button type="submit">Поиск</button>
</form>

3. Подключение jQuery UI Autocomplete для автозаполнения

WordPress уже включает jQuery, добавим jQuery UI Autocomplete и подключим скрипт:

function wpfinder_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('wpfinder-tag-autocomplete', get_stylesheet_directory_uri() . '/js/tag-autocomplete.js', ['jquery', 'jquery-ui-autocomplete'], null, true);
}
add_action('wp_enqueue_scripts', 'wpfinder_enqueue_scripts');

Создайте файл tag-autocomplete.js в папке вашей темы /js/ с таким содержимым:

jQuery(document).ready(function($) {
    $('#wpfinder-tag-input').autocomplete({
        source: function(request, response) {
            $.ajax({
                url: '/wp-json/wpfinder/v1/tags',
                data: { term: request.term },
                success: function(data) {
                    response($.map(data, function(item) {
                        return {
                            label: item.text,
                            value: item.text
                        };
                    }));
                }
            });
        },
        minLength: 2,
        delay: 300
    });
});

Этот скрипт связывает поле ввода с нашим REST API, подгружая подсказки при вводе минимум 2 символов.

Обработка результатов поиска по меткам в WordPress

Когда пользователь отправляет форму с параметром tag, WordPress должен отобразить записи с этой меткой. Для этого можно использовать стандартный архив таксономии post_tag, например, перейти по URL /tag/метка/.

Если нужно сделать переадресацию формы на нужную страницу, добавьте JavaScript обработчик, который перенаправляет на URL архива меток:

jQuery(document).ready(function($) {
    $('#wpfinder-tag-search').on('submit', function(e) {
        e.preventDefault();
        var tag = $('#wpfinder-tag-input').val().trim();
        if(tag) {
            var url = '/tag/' + encodeURIComponent(tag) + '/';
            window.location.href = url;
        }
    });
});
<

Это позволит пользователю сразу перейти к стандартной странице с постами, помеченными выбранной меткой.

Использование плагина для автозаполнения по меткам

Если вы предпочитаете готовые решения, рекомендуем плагин Autocomplete Plugins — однако они часто универсальные и не всегда идеально подходят для поиска именно по меткам.

Для более гибкой настройки можно рассмотреть плагин Expert Review от WPSHOP, который позволяет создавать формы с расширенной логикой, в том числе автозаполнение и фильтрацию по таксономиям.

Практические советы и улучшения

Кэширование результатов запроса

Так как REST API запросы к меткам могут быть частыми, разумно добавить кэширование с помощью Transients API:

function wpfinder_get_tags_autocomplete($request) {
    $search = sanitize_text_field($request->get_param('term'));
    if (empty($search)) {
        return [];
    }
    $cache_key = 'wpfinder_tags_' . md5($search);
    $cached = get_transient($cache_key);
    if ($cached !== false) {
        return $cached;
    }
    $tags = get_terms([
        'taxonomy' => 'post_tag',
        'hide_empty' => false,
        'search' => $search,
        'number' => 10
    ]);
    $results = [];
    foreach ($tags as $tag) {
        $results[] = ['id' => $tag->term_id, 'text' => $tag->name];
    }
    set_transient($cache_key, $results, HOUR_IN_SECONDS);
    return $results;
}

Поддержка нескольких меток и расширенная фильтрация

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

Интеграция с WP Community или JournalX

Если ваш сайт использует темы JournalX или WPCommunity, автозаполнение по меткам можно встроить в стандартные компоненты поиска этих тем, обеспечивая единый стиль и удобство для пользователей.

Вывод

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

Как удалить старые вариации продуктов WooCommerce с помощью кода
10.05.2026
Создание и использование Custom Post Types в WordPress
17.11.2025
Как использовать REST API WordPress для автоматического управления контентом
19.03.2026
Как изменить favicon в WordPress: практические решения с кодом и плагинами
27.03.2026
Удаление старых медиа файлов в WordPress с помощью PHP
13.01.2026