Управляемые списки — это отличный способ структурировать данные на сайте WordPress, будь то списки контактов, задач, товаров или любых других элементов. В этой статье разберём, как создать такие списки с возможностью редактирования и отображения с помощью собственного кода и популярных плагинов. Это позволит повысить удобство работы с контентом и расширить функциональность вашего сайта.
Что такое управляемые списки и зачем они нужны в WordPress
Управляемые списки — это динамические списки, которые можно создавать, редактировать и удалять через административную панель или на фронтенде сайта. В отличие от статического текста или простых HTML-списков, они позволяют хранить данные в базе WordPress, а затем выводить их в удобном виде. Такие списки полезны для каталогов, расписаний, меню и прочих структурированных данных.
Главные преимущества управляемых списков:
- Легкость редактирования через админку без изменения кода.
- Возможность интеграции с другими функциями сайта.
- Гибкость в отображении и кастомизации.
Рассмотрим, как это реализовать на практике.
Создание управляемых списков с помощью собственного кода
Создание кастомного типа записи для списка
Первый шаг — создать кастомный тип записи (Custom Post Type, CPT), который будет хранить элементы списка. Это позволит удобно управлять каждым пунктом через стандартный интерфейс WordPress.
function wplink_register_list_item_cpt() {
$args = array(
'labels' => array(
'name' => 'Элементы списка',
'singular_name' => 'Элемент списка',
),
'public' => true,
'show_in_menu' => true,
'supports' => array('title', 'editor'),
'has_archive' => false,
);
register_post_type('wplink_list_item', $args);
}
add_action('init', 'wplink_register_list_item_cpt');В результате в админке появится новый раздел «Элементы списка», где можно добавлять, редактировать и удалять пункты.
Вывод списка на странице с помощью шорткода
Чтобы отобразить список на любой странице, создадим шорткод, который выведет все элементы типа wplink_list_item.
function wplink_list_shortcode() {
$args = array(
'post_type' => 'wplink_list_item',
'posts_per_page' => -1,
'orderby' => 'date',
'order' => 'ASC',
);
$query = new WP_Query($args);
if (!$query->have_posts()) {
return '<p>Список пуст.</p>';
}
$output = '<ul class="wplink-list">';
while ($query->have_posts()) {
$query->the_post();
$output .= '<li>' . get_the_title() . '</li>';
}
$output .= '</ul>';
wp_reset_postdata();
return $output;
}
add_shortcode('wplink_list', 'wplink_list_shortcode');Добавьте шорткод [wplink_list] на страницу — и вы увидите список из всех элементов, которые создали в админке.
Добавление метаполей для расширения функционала списка
Для каждого элемента списка можно добавить дополнительные поля, например, описание или ссылку. Для этого используйте функцию add_meta_box:
function wplink_add_list_item_metabox() {
add_meta_box('wplink_list_details', 'Детали элемента списка', 'wplink_list_metabox_callback', 'wplink_list_item');
}
add_action('add_meta_boxes', 'wplink_add_list_item_metabox');
function wplink_list_metabox_callback($post) {
$description = get_post_meta($post->ID, '_wplink_description', true);
echo '<label for="wplink_description">Описание:</label>';
echo '<textarea id="wplink_description" name="wplink_description" rows="4" style="width:100%;">' . esc_textarea($description) . '</textarea>';
}
function wplink_save_list_item_metabox($post_id) {
if (array_key_exists('wplink_description', $_POST)) {
update_post_meta($post_id, '_wplink_description', sanitize_textarea_field($_POST['wplink_description']));
}
}
add_action('save_post', 'wplink_save_list_item_metabox');Затем в шорткоде можно выводить описание рядом с каждым пунктом списка.
Использование плагинов для создания управляемых списков
Плагин Advanced Custom Fields (ACF)
ACF — один из самых популярных плагинов для добавления кастомных полей. Он позволяет создавать сложные структуры данных, включая повторяющиеся поля, галереи и связи. Для создания управляемого списка используйте тип «Повторяющееся поле» или отдельный CPT с полями ACF.
Плюсы ACF:
- Удобный визуальный интерфейс для создания полей.
- Гибкость и совместимость с темами и плагинами.
- Хорошо документирован и поддерживается.
Для вывода данных ACF используйте функцию get_field():
$items = get_field('wplink_list_items');
if ($items) {
echo '<ul>';
foreach ($items as $item) {
echo '<li>' . esc_html($item['title']) . '</li>';
}
echo '</ul>';
}Плагин WPList Manager
WPList Manager — специализированный плагин для создания таблиц и списков с возможностью сортировки, фильтрации и пагинации. Он отлично подходит для каталогов, адресных книг и других структурированных данных.
Основные возможности:
- Импорт и экспорт данных.
- Настраиваемые шаблоны отображения.
- Интеграция с шорткодами и Gutenberg-блоками.
Этот плагин подойдёт, если вам нужна расширенная функциональность без программирования.
Плагин WPRemark для оценки и управления списками
WPRemark позволяет добавлять рейтинги и отзывы к элементам списка, что полезно для каталогов и обзоров. Интеграция с управляемыми списками расширяет интерактивность сайта, повышая вовлечённость пользователей.
Подробнее о WPRemark и его возможностях можно узнать на официальной странице плагина.
Практические советы по оптимизации и безопасности управляемых списков
При работе с кастомными типами записей и метаполями важно соблюдать несколько правил:
- Используйте
sanitize_textarea_fieldи другие функции очистки данных при сохранении. - Ограничьте права доступа к редактированию списков, чтобы избежать нежелательных изменений.
- Добавляйте индексы к метаполям в базе данных, если список большой и используется сортировка.
- Кэшируйте вывод списков, чтобы снизить нагрузку на сервер.
Также рекомендуем использовать плагины оптимизации и безопасности, например, Clearfy Pro, чтобы повысить производительность и защиту сайта.