В WordPress основными средствами организации контента являются таксономии. Помимо стандартных категорий и меток, можно создавать собственные иерархические таксономии, которые помогут структурировать ваш сайт более гибко и удобно. В этой статье разберём, как создать и настроить такую иерархию таксономий, а также рассмотрим примеры кода и полезные плагины для расширения функционала.
Что такое иерархическая таксономия в WordPress и зачем она нужна
Иерархическая таксономия — это способ группировки записей, где элементы могут иметь вложенность, то есть родительские и дочерние термины. Классический пример — категории. В отличие от меток, которые не имеют структуры, иерархия позволяет создавать многоуровневую организацию контента.
Создание собственной иерархической таксономии помогает лучше структурировать сложные сайты, например, интернет-магазины, сайты с каталогами или новостные порталы с тематическими разделами.
Помимо удобства для пользователей, иерархия таксономий улучшает SEO за счёт логичной структуры URL и навигации.
Как зарегистрировать свою иерархическую таксономию: пример кода
Для создания таксономии используется функция register_taxonomy. Важно передать параметр 'hierarchical' => true, чтобы включить поддержку иерархии.
Рассмотрим пример регистрации таксономии wphierarchy_genre для типа записи post с иерархией:
function wphierarchy_register_taxonomy_genre() {
$labels = array(
'name' => 'Жанры',
'singular_name' => 'Жанр',
'search_items' => 'Поиск жанров',
'all_items' => 'Все жанры',
'parent_item' => 'Родительский жанр',
'parent_item_colon' => 'Родительский жанр:',
'edit_item' => 'Редактировать жанр',
'update_item' => 'Обновить жанр',
'add_new_item' => 'Добавить новый жанр',
'new_item_name' => 'Название нового жанра',
'menu_name' => 'Жанры',
);
$args = array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'genre'),
);
register_taxonomy('wphierarchy_genre', array('post'), $args);
}
add_action('init', 'wphierarchy_register_taxonomy_genre');Этот код добавит в админ-панель раздел для работы с жанрами, которые можно организовывать в иерархию, например, «Фантастика» > «Киберпанк».
Отображение иерархии в шаблонах
Чтобы вывести иерархию терминов на фронтенде, используйте функцию wp_list_categories с параметром вашей таксономии:
wp_list_categories(array(
'taxonomy' => 'wphierarchy_genre',
'title_li' => '',
'hierarchical' => true
));Это создаст вложенный список жанров с поддержкой подуровней.
Как расширить возможности иерархических таксономий с помощью плагинов
Если вы хотите добавить дополнительные поля к терминам или сделать удобный интерфейс управления иерархией, обратите внимание на следующие плагины:
- Advanced Custom Fields (ACF) — позволяет добавлять любые кастомные поля к таксономиям, например, изображения, описания, цвета. Очень полезно для расширения метаданных.
- Taxonomy Terms Order — плагин для drag-and-drop сортировки терминов в любой таксономии, включая иерархические.
- Hierarchical Select — улучшает UI выбора терминов, позволяя выбирать термины в выпадающих списках с иерархией.
Используя эти инструменты, вы сможете настроить иерархию таксономий максимально удобно и функционально.
Пример использования кастомных полей для таксономии и вывод данных
Допустим, к жанрам мы хотим добавить изображение. С помощью ACF создадим новое поле «Изображение жанра» для таксономии wphierarchy_genre.
В шаблоне для вывода списка жанров можно получить и вывести это изображение так:
$terms = get_terms(array(
'taxonomy' => 'wphierarchy_genre',
'hide_empty' => false,
));
if (!empty($terms) && !is_wp_error($terms)) {
echo '<ul>';
foreach ($terms as $term) {
$image_id = get_field('image', $term); // ACF функция
$image_url = wp_get_attachment_image_url($image_id, 'thumbnail');
echo '<li>';
if ($image_url) {
echo '<img src="' . esc_url($image_url) . '" alt="' . esc_attr($term->name) . '" style="width:50px;height:auto;"/> ';
}
echo esc_html($term->name);
echo '</li>';
}
echo '</ul>';
}Такой подход улучшит визуальное восприятие иерархии на сайте.
Советы по оптимизации иерархических таксономий и SEO
Иерархия таксономий влияет на формирование ЧПУ (человекопонятных URL). Например, для термина «Киберпанк» внутри «Фантастика» URL будет выглядеть как /genre/fantastika/kiberpank/. Это хорошо для SEO, но требует правильной настройки пермалинков.
Чтобы избежать проблем с дублями страниц и улучшить индексацию, рекомендуем:
- Установить плагин Yoast SEO или аналогичный, настроить его для таксономий.
- Использовать канонические URL для терминов.
- Регулярно проверять иерархию на предмет «потерянных» терминов без родителей.
Также старайтесь не создавать слишком глубокую вложенность, чтобы не ухудшать навигацию и скорость загрузки.