В работе с WordPress часто возникает задача создать для пользователей удобный интерфейс выбора из большого количества опций. Например, это может быть фильтр товаров, настройка параметров в плагине или форма с динамическим набором вариантов. В этой статье мы подробно разберем, как автоматически создавать такие настройки с большим выбором, используя примеры кода и полезные плагины.
Почему важно автоматизировать создание выбора
Когда количество опций в настройках или форме растет, ручное добавление каждого пункта становится неудобным и ошибкоопасным. Автоматизация позволяет:
- Облегчить поддержку и обновление настроек;
- Динамически подгружать варианты из базы данных или внешних источников;
- Сократить время разработки;
- Улучшить UX за счет удобного интерфейса.
Например, если у вас интернет-магазин, и вам нужно создать фильтр по тысячам товаров или характеристик, то автоматический выбор из большого списка – обязательное требование.
Использование пользовательских полей и метаполей для большого выбора
Самый простой способ – использовать пользовательские поля (custom fields) и метаполя для хранения данных и динамического формирования выбора.
Для этого нужно написать функцию, которая получает массив значений из метаполя и выводит их как выпадающий список или чекбоксы.
Пример функции wprobot_render_large_select для создания выпадающего списка
function wprobot_render_large_select($meta_key, $post_id = null) {
if (!$post_id) {
$post_id = get_the_ID();
}
$values = get_post_meta($post_id, $meta_key, true);
if (empty($values) || !is_array($values)) {
echo '<p>Нет данных для выбора.</p>';
return;
}
echo '<select name="' . esc_attr($meta_key) . '">';
foreach ($values as $value) {
echo '<option value="' . esc_attr($value) . '">' . esc_html($value) . '</option>';
}
echo '</select>';
}Эта функция проверяет, есть ли массив значений в метаполе, и создает стандартный селект. При большом количестве опций это может быть неудобно для пользователей, тогда стоит использовать плагин с поиском.
Плагины для удобного выбора с поиском и фильтрами
Чтобы улучшить интерфейс выбора из большого списка, рекомендуем использовать следующие плагины:
- Select2 — JavaScript-библиотека, которую можно интегрировать в WordPress для улучшения селектов с поиском и тегами.
- Advanced Custom Fields (ACF) — популярный плагин для создания произвольных полей с возможностью выбора из больших списков с поиском и фильтрацией.
- WP User Frontend — позволяет создавать формы с динамическими полями и большими списками выбора.
Интеграция Select2 с WordPress упрощает работу с большими селектами. Ниже пример подключения и инициализации Select2 для селектора, созданного функцией wprobot_render_large_select.
Пример подключения Select2
function wprobot_enqueue_select2() {
wp_enqueue_style('select2-css', 'https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css');
wp_enqueue_script('select2-js', 'https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js', array('jquery'), null, true);
wp_add_inline_script('select2-js', "jQuery(document).ready(function($){ $('select').select2(); });");
}
add_action('wp_enqueue_scripts', 'wprobot_enqueue_select2');После подключения пользовательский селект получит удобный поиск и фильтрацию, что значительно улучшит UX при большом количестве опций.
Автоматическая загрузка и обновление вариантов выбора из внешних источников
В некоторых случаях значения для выбора нужно подтягивать из внешних API или баз данных. Например, автоматический импорт категорий или товаров для фильтрации.
Для этого можно использовать WP-Cron и REST API WordPress. Ниже пример функции, которая получает данные из внешнего API и обновляет метаполе с выбором.
Пример функции wprobot_update_select_options_from_api
function wprobot_update_select_options_from_api() {
$response = wp_remote_get('https://api.example.com/options');
if (is_wp_error($response)) {
return;
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if (empty($data) || !is_array($data)) {
return;
}
$options = array_map(function($item) {
return sanitize_text_field($item['name']);
}, $data);
update_option('wprobot_select_options', $options);
}
add_action('wprobot_hourly_event', 'wprobot_update_select_options_from_api');
// Регистрируем событие WP-Cron
if (!wp_next_scheduled('wprobot_hourly_event')) {
wp_schedule_event(time(), 'hourly', 'wprobot_hourly_event');
}Теперь в функции wprobot_render_large_select можно выводить значения из get_option('wprobot_select_options') вместо метаполей.
Использование плагина Clearfy Pro для оптимизации и управления настройками
Плагин Clearfy Pro помогает оптимизировать работу с настройками и может автоматически отключать ненужные скрипты, что особенно важно при работе с большими формами и списками, чтобы не перегружать сайт.
В панели Clearfy можно настроить отключение стилей и скриптов, которые не используются, тем самым ускорив загрузку страниц с большими настройками.
Выводы и рекомендации
Автоматизация создания настроек с большим выбором в WordPress — важный этап для создания удобных и масштабируемых проектов. В статье мы рассмотрели:
- Использование метаполей для хранения вариантов выбора;
- Создание функций для динамического вывода селектов;
- Подключение и интеграцию Select2 для удобного поиска в списках;
- Автоматическую загрузку данных из внешних API с помощью WP-Cron;
- Использование плагина Clearfy Pro для оптимизации работы сайта.
Благодаря этим решениям вы сможете создавать мощные интерфейсы выбора, которые будут удобны и понятны пользователям, а также легко поддерживаемы с технической стороны.