Таксономии в WordPress — это способ группировки записей по определённым параметрам, что помогает лучше структурировать контент. Помимо стандартных категорий и меток, WordPress позволяет создавать собственные таксономии, которые могут быть иерархическими или нет. В этой статье подробно разберём, как создать свою таксономию, настроить её отображение и использовать в шаблонах, с реальными примерами кода.
Что такое таксономия в WordPress и зачем создавать свою
По умолчанию WordPress предлагает две таксономии: категории и метки. Они подходят для большинства блогов, но если вы создаёте сайт с уникальной структурой контента, например, каталог товаров, портфолио или справочник, стандартных таксономий может быть недостаточно.
Собственные таксономии позволяют:
- Группировать записи по уникальным признакам;
- Добавлять иерархическую структуру (например, жанры, поджанры);
- Фильтровать контент для пользователей и в админке;
- Улучшать SEO-за счёт более точной организации контента.
Создание собственной таксономии — практическое решение для сайтов с уникальными требованиями к структуре данных.
Регистрация собственной таксономии: базовый пример
Для регистрации таксономии используется функция register_taxonomy. Обычно её вызывают в хуке init. Рассмотрим пример создания таксономии «Жанры» для кастомного типа записей «Книги».
function wordpressa_register_taxonomy_genres() {
$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('genre', 'book', $args);
}
add_action('init', 'wordpressa_register_taxonomy_genres');Здесь:
hierarchical = true— таксономия ведёт себя как категории, с иерархией;'genre'— имя таксономии;'book'— тип записи, к которому привязывается таксономия;- Настраиваем метки для удобства в админке.
Если у вас нет кастомного типа записей «book», его нужно зарегистрировать отдельно.
Регистрация кастомного типа записей для связки с таксономией
Чтобы таксономия работала, нужно иметь соответствующий тип записей. Вот пример регистрации типа «Книги».
function wordpressa_register_post_type_book() {
$labels = array(
'name' => 'Книги',
'singular_name' => 'Книга',
'menu_name' => 'Книги',
'name_admin_bar' => 'Книга',
'add_new' => 'Добавить новую',
'add_new_item' => 'Добавить новую книгу',
'new_item' => 'Новая книга',
'edit_item' => 'Редактировать книгу',
'view_item' => 'Просмотреть книгу',
'all_items' => 'Все книги',
'search_items' => 'Поиск книг',
'parent_item_colon' => 'Родительская книга:',
'not_found' => 'Книги не найдены.',
'not_found_in_trash' => 'В корзине книги не найдены.',
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array('slug' => 'book'),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 5,
'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments'),
);
register_post_type('book', $args);
}
add_action('init', 'wordpressa_register_post_type_book');Этот код создаёт удобный тип записей с базовыми возможностями. Теперь вы можете связывать записи «Книги» с жанрами.
Отображение пользовательской таксономии в шаблоне
Чтобы вывести список жанров, связанных с записью, в шаблоне single-book.php, используйте функцию get_the_terms().
<?php
$terms = get_the_terms(get_the_ID(), 'genre');
if ($terms && ! is_wp_error($terms)) {
echo '<ul class="book-genres">';
foreach ($terms as $term) {
$term_link = get_term_link($term);
echo '<li><a href="' . esc_url($term_link) . '">' . esc_html($term->name) . '</a></li>';
}
echo '</ul>';
}
?>Это создаст список с ссылками на архивы жанров.
Вывод записей по таксономии на странице архива
Архив таксономии автоматически доступен по адресу /genre/slug-zhana/. Чтобы настроить вывод на странице архива, создайте файл taxonomy-genre.php в папке темы.
Пример базового цикла вывода записей:
<?php if (have_posts()) : ?>
<h1>Архив жанра: <?php single_term_title(); ?></h1>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php else : ?>
<p>Записи не найдены.</p>
<?php endif; ?>Расширенные настройки и интеграция с плагинами
Вы можете добавить поддержку таксономии в админ-фильтры, настроить REST API для работы с Gutenberg и внешними приложениями. Для этого при регистрации таксономии установите дополнительные параметры:
'show_in_rest' => true— для REST API;'meta_box_cb' => 'post_categories_meta_box'— для стандартного вида метабокса;'show_admin_column' => true— чтобы отображать колонку в списке записей.
Если вы используете плагин Clearfy Pro от WPSHOP, он помогает оптимизировать работу с таксономиями и отключать лишние таксономии для ускорения сайта.
Создание кастомной таксономии с помощью плагина
Если не хочется писать код вручную, можно использовать плагины, например Custom Post Type UI. Но ручной код даёт больше контроля и не нагружает сайт.
Итоги и рекомендации по созданию таксономий
Создание собственной таксономии — мощный инструмент для уникальной структуры контента. Вот что важно учитывать:
- Регистрируйте таксономии в хуке
init; - Используйте понятные имена и слаги для URL;
- Обязательно создайте или выберите тип записей, к которому привязывается таксономия;
- Настройте отображение в шаблонах и админке;
- Добавьте поддержку REST API для современных редакторов и интеграций;
- Оптимизируйте таксономии, отключая ненужные через плагины как Clearfy Pro.
Следуя этим рекомендациям, вы создадите удобную и эффективную систему группировки контента под любые задачи.