Что такое Custom Taxonomy и зачем она нужна в WordPress
WordPress по умолчанию предоставляет две основных таксономии: категории и метки. Однако часто возникает необходимость структурировать контент более гибко, особенно если стандартных способов категоризации недостаточно. Для этого в WordPress предусмотрены Custom Taxonomy — пользовательские таксономии, которые позволяют создавать собственные группы для постов, страниц или любых типов записей (Custom Post Types).
Использование Custom Taxonomy помогает улучшить навигацию по сайту, повысить удобство работы с админкой и улучшить SEO за счет более точной организации контента. Например, если у вас сайт с отзывами на фильмы, вы можете создать таксономию «Жанр» и «Страна производства», чтобы фильтровать посты по этим параметрам.
Давайте разберемся, как создавать и использовать Custom Taxonomy на практике.
Создание Custom Taxonomy через код: пример для сайта на WordPress
Для создания пользовательской таксономии нужно добавить код в файл functions.php вашей темы или в отдельный плагин. Ниже пример создания таксономии «Жанр» для записей типа post.
function wpmake_register_genre_taxonomy() {
$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('wpmake_genre', array('post'), $args);
}
add_action('init', 'wpmake_register_genre_taxonomy');В этом примере мы создаем и регистрируем таксономию wpmake_genre, которая отобразится в админке и будет доступна для записей (post). Аргумент hierarchical определяет, будет ли таксономия иметь древовидную структуру, как категории, или плоскую, как метки.
Важно использовать уникальные префиксы (в данном случае wpmake_), чтобы избежать конфликтов с другими плагинами или темами.
Как использовать Custom Taxonomy в шаблонах темы WordPress
После создания таксономии полезно вывести ее значения на сайте. Например, вы хотите отобразить жанры, к которым относится пост, в шаблоне single.php.
Для этого используйте функцию get_the_term_list():
echo get_the_term_list(get_the_ID(), 'wpmake_genre', 'Жанры: ', ', ');Эта функция выводит список терминов (жанров) для текущего поста, разделенных запятыми и с префиксом «Жанры:».
Если нужно вывести все термины таксономии с ссылками, применяется функция get_terms():
$genres = get_terms(array(
'taxonomy' => 'wpmake_genre',
'hide_empty' => false,
));
if (!empty($genres) && !is_wp_error($genres)) {
echo '<ul>';
foreach ($genres as $genre) {
echo '<li><a href="' . esc_url(get_term_link($genre)) . '">' . esc_html($genre->name) . '</a></li>';
}
echo '</ul>';
}Использование плагинов для создания Custom Taxonomy без кода
Если вы не хотите писать код, можно воспользоваться плагинами, которые позволяют создавать и управлять пользовательскими таксономиями через интерфейс WordPress:
- Custom Post Type UI — популярный и удобный плагин, позволяющий создавать как типы записей, так и таксономии с гибкими настройками.
- Pods — мощный инструмент для создания и управления типами записей, таксономиями и пользовательскими полями.
- Toolset Types — расширенный плагин для более сложной настройки структуры сайта без программирования.
Использование плагинов удобно для быстрого старта и минимизации ошибок, но при этом рекомендуется после создания таксономии экспортировать настройки в код для лучшей производительности и контроля.
Фильтрация и запросы с Custom Taxonomy в WordPress
Custom Taxonomy можно использовать для фильтрации записей в запросах WP_Query — это полезно для создания страниц с отфильтрованным контентом.
Пример запроса, который выводит посты с жанром «драма»:
$query = new WP_Query(array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'wpmake_genre',
'field' => 'slug',
'terms' => 'drama',
),
),
));
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
the_title('<h3>', '</h3>');
the_excerpt();
}
wp_reset_postdata();
} else {
echo 'Посты не найдены';
}Такой подход позволяет создавать сложные фильтры и страницы архивов с нужным содержимым.
Советы по использованию Custom Taxonomy для улучшения структуры сайта
При разработке пользовательских таксономий стоит придерживаться нескольких рекомендаций:
- Используйте осмысленные и понятные названия терминов и таксономий.
- Определяйте, нужна ли иерархия (дерево) в таксономии, чтобы избежать излишней сложности.
- Добавляйте поддержку таксономии только для тех типов записей, где это действительно нужно.
- Обязательно добавляйте префиксы к названиям функций и таксономий, чтобы избежать конфликтов.
- Тестируйте отображение на фронтенде и в админке, чтобы убедиться, что интерфейс удобен.
Использование Custom Taxonomy повышает качество и удобство управления контентом в WordPress, делает сайт более структурированным и гибким для пользователей и поисковиков.