В WordPress таксономии — это способ группировки и классификации контента. Помимо стандартных категорий и меток, вы можете создавать собственные таксономии, чтобы структурировать данные более гибко и удобно для пользователей вашего сайта. В этой статье разберём, как создать и правильно использовать пользовательские таксономии, рассмотрим примеры кода и лучшие практики.
Что такое пользовательские таксономии в WordPress
Таксономии — это механизм группировки записей. WordPress по умолчанию предлагает две встроенные таксономии: category и tag. Пользовательские таксономии позволяют расширить этот функционал, создавая свои собственные типы классификации, например, «Жанры», «Темы», «Проекты» и другие.
Пользовательские таксономии бывают двух типов:
- Иерархические (как категории) — позволяют создавать вложенные термины.
- Неиерархические (как метки) — плоские списки терминов без вложенности.
Создавая собственные таксономии, вы улучшаете навигацию и SEO вашего сайта, а также делаете структуру контента понятнее.
Как зарегистрировать пользовательскую таксономию в WordPress
Для создания таксономии используется функция register_taxonomy(), которую нужно вызывать на хук init. Рассмотрим пример создания иерархической таксономии genre для постов типа post.
add_action('init', 'wpfaq_register_taxonomy_genre');
function wpfaq_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('genre', array('post'), $args);
}В этом коде мы задаём метки для интерфейса администратора и параметры таксономии. Ключевой параметр hierarchical определяет тип таксономии.
Пояснения к параметрам
show_ui— отображать ли таксономию в админке.show_admin_column— показывать ли колонку с таксономией в списке записей.query_var— позволяет использовать таксономию в URL-запросах.rewrite— настройки ЧПУ для таксономии.
Использование пользовательской таксономии в шаблонах
После регистрации таксономии вы можете выводить связанные термины в шаблонах темы. Например, чтобы получить жанры текущего поста, используйте:
$terms = get_the_terms(get_the_ID(), 'genre');
if ($terms && ! is_wp_error($terms)) {
echo '<ul>';
foreach ($terms as $term) {
echo '<li>' . esc_html($term->name) . '</li>';
}
echo '</ul>';
}Этот код выведет список жанров, к которым относится запись. Если нужно вывести ссылки на архивы таксономии:
$terms = get_the_terms(get_the_ID(), 'genre');
if ($terms && ! is_wp_error($terms)) {
echo '<ul>';
foreach ($terms as $term) {
$term_link = get_term_link($term);
if (!is_wp_error($term_link)) {
echo '<li><a href="' . esc_url($term_link) . '">' . esc_html($term->name) . '</a></li>';
}
}
echo '</ul>';
}Пример создания неиерархической таксономии
Если вам нужна таксономия, похожая на метки, создайте её так:
add_action('init', 'wpfaq_register_taxonomy_topic');
function wpfaq_register_taxonomy_topic() {
$labels = array(
'name' => 'Темы',
'singular_name' => 'Тема',
'search_items' => 'Поиск тем',
'popular_items' => 'Популярные темы',
'all_items' => 'Все темы',
'edit_item' => 'Редактировать тему',
'update_item' => 'Обновить тему',
'add_new_item' => 'Добавить новую тему',
'new_item_name' => 'Название новой темы',
'separate_items_with_commas' => 'Разделяйте темы запятыми',
'choose_from_most_used' => 'Выберите из самых используемых',
'menu_name' => 'Темы',
);
$args = array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'update_count_callback' => '_update_post_term_count',
'query_var' => true,
'rewrite' => array('slug' => 'topic'),
);
register_taxonomy('topic', 'post', $args);
}Обратите внимание на 'hierarchical' => false — это значит, что термины не будут иметь вложенности.
Добавление пользовательской таксономии к своим типам записей
Если вы создали собственный тип записи (Custom Post Type), например book, вы можете прикрепить к нему таксономии при регистрации:
register_taxonomy('genre', array('book'), $args);Или добавить таксономию к нескольким типам:
register_taxonomy('genre', array('post', 'book'), $args);Это позволит использовать таксономию для разных типов контента.
Как сделать пользовательские таксономии доступными в REST API
В современных проектах важно, чтобы таксономии были доступны через REST API. Для этого добавьте параметр show_in_rest в настройки таксономии:
$args = array(
// другие параметры
'show_in_rest' => true,
);
register_taxonomy('genre', array('post'), $args);Это позволит вам работать с таксономиями через JavaScript, React-приложения и внешние сервисы.
Оптимизация и лучшие практики при работе с таксономиями
При работе с пользовательскими таксономиями важно соблюдать несколько правил:
- Используйте уникальные префиксы в названиях функций и таксономий, например,
wpfaq_, чтобы избежать конфликтов. - Правильно настройте ЧПУ через параметр
rewriteдля SEO-дружественных URL. - Добавляйте поддержку таксономий в шаблоны темы для удобства пользователей.
- Используйте
show_admin_column, чтобы видеть таксономии в списках записей в админке. - Если таксономия не нужна в REST API, отключайте параметр
show_in_rest.
Пример плагина для создания пользовательской таксономии
Для удобства можно оформить регистрацию таксономии в виде плагина. Создайте файл wpfaq-custom-taxonomy.php в папке wp-content/plugins с таким содержимым:
<?php
/**
* Plugin Name: WPFAQ Custom Taxonomy
* Description: Регистрация пользовательской таксономии "Жанры" для постов
* Version: 1.0
* Author: WPFAQ
*/
add_action('init', 'wpfaq_register_taxonomy_genre');
function wpfaq_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'),
'show_in_rest' => true,
);
register_taxonomy('genre', array('post'), $args);
}
Активируйте плагин в админке — и таксономия появится в вашем сайте.
Заключение
Пользовательские таксономии — мощный инструмент для организации контента в WordPress. Они помогают не только структурировать информацию, но и улучшают UX и SEO. Создавайте и настраивайте таксономии под задачи вашего проекта, используя приведённые примеры и лучшие практики.
Если хотите расширить функционал сайта, рекомендуем ознакомиться с плагином Clearfy Pro, который поможет оптимизировать работу таксономий и других аспектов WordPress.