Как создать выбор поля в форме WordPress с динамическими значениями

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

Зачем нужен динамический выбор поля в форме WordPress

Статические списки в формах ограничивают функциональность и удобство пользователей. Если значения меняются, приходится изменять код или настройки вручную. Динамические поля позволяют автоматизировать этот процесс, подгружая актуальные данные из базы WordPress. Это полезно при создании форм обратной связи, фильтров, настроек плагинов и других интерактивных элементов.

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

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

Пример 1. Создание выпадающего списка категорий в форме

Рассмотрим базовый пример создания select с категориями. Сначала получим категории с помощью функции WordPress get_categories(), затем выведем их в теге <select>.

function wpassist_get_categories_select() {
    $categories = get_categories(array('hide_empty' => false));
    $html = '<select name="wpassist_category">';
    foreach ($categories as $category) {
        $html .= '<option value="' . esc_attr($category->term_id) . '">' . esc_html($category->name) . '</option>';
    }
    $html .= '</select>';
    return $html;
}

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

Пример использования в шорткоде

function wpassist_category_select_shortcode() {
    return wpassist_get_categories_select();
}
add_shortcode('wpassist_category_select', 'wpassist_category_select_shortcode');

Теперь, вставив в пост или страницу [wpassist_category_select], вы получите форму с динамическим списком категорий.

Пример 2. Выбор пользователя из базы WordPress

Иногда требуется вывести список пользователей для выбора в форме, например, для назначения ответственного лица или подписки. Для этого используем функцию get_users():

function wpassist_get_users_select() {
    $users = get_users(array('orderby' => 'display_name'));
    $html = '<select name="wpassist_user">';
    foreach ($users as $user) {
        $html .= '<option value="' . esc_attr($user->ID) . '">' . esc_html($user->display_name) . '</option>';
    }
    $html .= '</select>';
    return $html;
}

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

Обработка данных из динамического поля в форме

Вывод формы — это лишь половина задачи. Важно корректно обработать отправленные данные. Пример на основе обработки выбора категории в обработчике формы:

if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['wpassist_category'])) {
    $category_id = intval($_POST['wpassist_category']);
    // Проверяем, существует ли категория
    $category = get_category($category_id);
    if ($category && !is_wp_error($category)) {
        // Можно выполнить нужные действия с выбранной категорией
        echo 'Вы выбрали категорию: ' . esc_html($category->name);
    } else {
        echo 'Выбрана неверная категория';
    }
}

Всегда проверяйте и фильтруйте входящие данные для безопасности и корректности.

Расширение функционала: динамический выбор с AJAX

Для улучшения UX можно сделать поле выбора с динамической подгрузкой значений через AJAX. Особенно это актуально при большом количестве элементов (пользователей, товаров и т.п.). Пример реализации с использованием jQuery и REST API WordPress:

Создаем AJAX обработчик в WordPress

add_action('wp_ajax_wpassist_get_users', 'wpassist_get_users_ajax');
add_action('wp_ajax_nopriv_wpassist_get_users', 'wpassist_get_users_ajax');

function wpassist_get_users_ajax() {
    $search = sanitize_text_field($_GET['q']);
    $users = get_users(array(
        'search' => '*' . $search . '*',
        'search_columns' => array('user_login', 'user_nicename', 'display_name'),
        'number' => 10
    ));
    $result = array();
    foreach ($users as $user) {
        $result[] = array(
            'id' => $user->ID,
            'text' => $user->display_name
        );
    }
    wp_send_json($result);
}

HTML и JavaScript для динамического выбора

<select id="wpassist_user_select" style="width: 300px;"></select>

<script>
jQuery(document).ready(function($) {
    $('#wpassist_user_select').select2({
        placeholder: 'Выберите пользователя',
        ajax: {
            url: wpassist_vars.ajax_url + '?action=wpassist_get_users',
            dataType: 'json',
            delay: 250,
            data: function(params) {
                return { q: params.term };
            },
            processResults: function(data) {
                return { results: data };
            },
            cache: true
        },
        minimumInputLength: 1
    });
});
</script>

Для работы этого примера потребуется подключить библиотеку Select2 и локализовать переменную wpassist_vars.ajax_url через wp_localize_script. Такой подход позволяет подгружать пользователей по запросу без перезагрузки страницы.

Заключение

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

Для дополнительной оптимизации и расширения функционала советуем обратить внимание на плагины вроде Clearfy Pro, который помогает оптимизировать работу WordPress и управлять элементами сайта.

Как создать автозаполняемое поле в формах WordPress с примерами кода
11.03.2026
Как настроить загрузку изображений Lazy Load в WordPress без плагинов
04.03.2026
Как отключить AJAX загрузку товаров в WooCommerce
06.12.2025
Как удалить пустые термины в таксономиях WordPress
06.04.2026
Как сделать собственную авторизацию в WordPress с помощью shortcode
21.01.2026