В работе с WordPress часто возникает задача облегчить пользователям ввод информации, особенно если это повторяющиеся или структурированные данные. В этой статье мы подробно разберем, как создать автозаполняемый формат данных в WordPress, чтобы повысить удобство и скорость ввода, снизить количество ошибок и улучшить пользовательский опыт.
Почему важно использовать автозаполнение в WordPress
Автозаполнение позволяет пользователям быстро заполнять формы, получая подсказки или автоматически вставляя часто используемые значения. Это особенно полезно для сложных форм, метаданных, настроек плагинов и пользовательских полей.
Например, при заполнении адреса или контактных данных, автозаполнение может предложить уже введенные ранее варианты. Это экономит время и исключает ошибки.
Для разработчиков добавление автозаполнения — способ сделать интерфейс более дружелюбным, а сайт — более профессиональным.
Как реализовать автозаполнение на примере пользовательских полей
Рассмотрим пример создания автозаполняемого поля для пользовательских метаданных в админке WordPress. Для этого удобно использовать JavaScript и jQuery UI Autocomplete.
Подключение скриптов и стилей jQuery UI
Для корректной работы автозаполнения подключим необходимые библиотеки в админке:
function wpplugin_enqueue_admin_scripts($hook) {
if ('post.php' != $hook && 'post-new.php' != $hook) {
return;
}
wp_enqueue_script('jquery-ui-autocomplete');
wp_enqueue_style('jquery-ui-css', 'https://code.jquery.com/ui/1.13.2/themes/smoothness/jquery-ui.css');
wp_enqueue_script('wpplugin-autocomplete', plugin_dir_url(__FILE__) . 'js/autocomplete.js', array('jquery', 'jquery-ui-autocomplete'), '1.0', true);
}
add_action('admin_enqueue_scripts', 'wpplugin_enqueue_admin_scripts');Этот код подключит в редакторе записи нужные библиотеки и наш собственный скрипт autocomplete.js.
Пример JavaScript для автозаполнения
В файле autocomplete.js реализуем логику автозаполнения с помощью AJAX:
jQuery(document).ready(function($){
$('#wpplugin_custom_field').autocomplete({
source: function(request, response) {
$.ajax({
url: ajaxurl,
dataType: 'json',
data: {
action: 'wpplugin_autocomplete_handler',
term: request.term
},
success: function(data) {
response(data);
}
});
},
minLength: 2
});
});Здесь мы отслеживаем ввод пользователя и отправляем AJAX запрос к серверу, где обрабатываем запрос и возвращаем возможные варианты.
Создание обработчика AJAX на сервере
В файле плагина добавим обработчик, который по запросу возвращает JSON-массив с подсказками:
function wpplugin_autocomplete_handler() {
global $wpdb;
$term = isset($_GET['term']) ? sanitize_text_field($_GET['term']) : '';
$results = [];
if (!empty($term)) {
$like = '%' . $wpdb->esc_like($term) . '%';
$query = $wpdb->prepare(
"SELECT DISTINCT meta_value FROM {$wpdb->postmeta} WHERE meta_key = 'wpplugin_custom_field' AND meta_value LIKE %s LIMIT 10",
$like
);
$rows = $wpdb->get_col($query);
if ($rows) {
foreach ($rows as $row) {
$results[] = $row;
}
}
}
wp_send_json($results);
}
add_action('wp_ajax_wpplugin_autocomplete_handler', 'wpplugin_autocomplete_handler');Этот обработчик ищет в базе похожие значения по ключу wpplugin_custom_field и возвращает их для автозаполнения.
Использование плагинов для автозаполнения в WordPress
Если вы не хотите писать код, можно использовать готовые решения. Вот несколько полезных плагинов с поддержкой автозаполнения:
- Advanced Custom Fields (ACF) — с помощью расширений и собственного JavaScript можно реализовать автозаполнение в полях.
- SearchWP Live Ajax Search — улучшает поиск и автозаполнение по содержимому сайта.
- WPForms — популярный конструктор форм с возможностью автозаполнения.
Однако собственная реализация гибче и позволяет работать с любыми метаданными и логикой сайта.
Практические советы по улучшению автозаполнения
Оптимизация производительности
При большом объеме данных стоит ограничить количество результатов, использовать индексы в базе или кеширование ответов. Это снизит нагрузку и ускорит отклик.
Обеспечение безопасности
Обязательно фильтруйте входящие данные через sanitize_text_field и используйте соответствующие проверки прав доступа в AJAX обработчиках, чтобы не раскрывать лишнюю информацию.
Интеграция с другими плагинами
Если вы используете плагины типа Clearfy Pro или WPRemark, можно встроить автозаполнение в их интерфейсы для повышения UX. Например, для отзывов WPRemark можно добавить автозаполнение полей имени или email.
Пример расширенного автозаполнения с кастомными данными
Допустим, нужно автозаполнять поле с названиями городов из пользовательской таблицы. Тогда в AJAX-обработчике запрос будет к этой таблице, а в JavaScript можно добавить отображение дополнительных данных, например, кода региона.
jQuery(document).ready(function($){
$('#city_field').autocomplete({
source: function(request, response) {
$.ajax({
url: ajaxurl,
dataType: 'json',
data: {
action: 'wpplugin_city_autocomplete',
term: request.term
},
success: function(data) {
response($.map(data, function(item) {
return {
label: item.city + ' (' + item.region_code + ')',
value: item.city
};
}));
}
});
},
minLength: 2
});
});На сервере возвращаем массив объектов с городами и кодами регионов, что делает автозаполнение информативнее.
Такой подход можно адаптировать для любых данных — товаров, категорий, пользователей и т.д.