Как создать и использовать кастомные таксономии в WordPress
В этой статье разберем, как с помощью WordPress API создать собственные таксономии, которые помогут структурировать контент сайта более гибко и удобно. Кастомные таксономии — отличный инструмент для расширения стандартных категорий и меток и позволяют создавать новые типы группировок для постов и других типов записей.
Что такое кастомные таксономии в WordPress
Таксономии в WordPress — это способ группировки записей по определенным признакам. По умолчанию это категории и метки, но для создания более сложной структуры сайта часто требуется добавить свои таксономии. Например, для сайта с фильмами можно создать таксономию «Жанры», для портфолио — «Типы работ» и т.д.
Кастомные таксономии позволяют:
- Группировать записи по уникальным критериям;
- Улучшить навигацию по сайту;
- Повысить удобство создания и управления контентом;
- Расширить возможности фильтрации и поиска.
Для создания таксономий используется функция register_taxonomy. Рассмотрим ее применение с примерами.
Как зарегистрировать кастомную таксономию в WordPress
Для регистрации новой таксономии нужно использовать хук init, чтобы код выполнялся после инициализации WordPress. Вот базовый пример регистрации таксономии «Жанр» для типа записи «post»:
function wpapi_register_taxonomy_genre() {
$labels = array(
'name' => 'Жанры',
'singular_name' => 'Жанр',
'search_items' => 'Поиск жанров',
'all_items' => 'Все жанры',
'edit_item' => 'Редактировать жанр',
'update_item' => 'Обновить жанр',
'add_new_item' => 'Добавить новый жанр',
'new_item_name' => 'Название нового жанра',
'menu_name' => 'Жанры',
);
$args = array(
'labels' => $labels,
'hierarchical' => true, // древовидная таксономия, как категории
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'rewrite' => array('slug' => 'genre'),
);
register_taxonomy('genre', array('post'), $args);
}
add_action('init', 'wpapi_register_taxonomy_genre');Здесь мы определяем набор ярлыков для удобства администратора, задаем параметры таксономии и привязываем ее к стандартному типу записи «post».
Пояснения по параметрам
hierarchical — если true, таксономия работает как категории (иерархия, подкатегории), если false — как метки (плоская структура).
public — делает таксономию доступной на фронтенде и в админке.
show_ui — отображение в админке.
show_admin_column — добавляет колонку с таксономией в список записей.
rewrite — параметры ЧПУ для URL таксономии.
Использование кастомных таксономий в шаблонах темы
После регистрации таксономии можно выводить ее значения в шаблонах, например, в файле single.php рядом с заголовком поста. Для этого используйте функцию wpapi_get_the_terms_list (создадим обертку для удобства):
function wpapi_get_the_terms_list($post_id, $taxonomy, $before = '', $sep = ', ', $after = '') {
$terms = get_the_terms($post_id, $taxonomy);
if (empty($terms) || is_wp_error($terms)) {
return '';
}
$term_links = array();
foreach ($terms as $term) {
$term_links[] = '<a href="' . esc_url(get_term_link($term)) . '">' . esc_html($term->name) . '</a>';
}
return $before . join($sep, $term_links) . $after;
}Теперь в шаблоне можно вывести жанры поста так:
echo wpapi_get_the_terms_list(get_the_ID(), 'genre', 'Жанры: ');Это выведет список жанров с ссылками на архивные страницы по ним.
Как добавить таксономию к кастомному типу записи
Если у вас есть кастомный тип записи, например, «movie», то для добавления таксономии нужно указать этот тип при регистрации таксономии:
function wpapi_register_taxonomy_movie_genre() {
$labels = array(
'name' => 'Жанры фильмов',
'singular_name' => 'Жанр фильма',
// остальные ярлыки как в примере выше
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'rewrite' => array('slug' => 'movie-genre'),
);
register_taxonomy('movie_genre', array('movie'), $args);
}
add_action('init', 'wpapi_register_taxonomy_movie_genre');Важно, чтобы сам кастомный тип записи был зарегистрирован заранее. Таксономия корректно привяжется и отобразится в админке.
Использование плагинов для управления кастомными таксономиями
Если вы не хотите писать код вручную, есть несколько популярных плагинов, которые позволяют создавать кастомные таксономии через удобный интерфейс:
- Custom Post Type UI — самый популярный плагин для создания кастомных типов записей и таксономий без кода.
- Pods — мощный инструмент для создания и управления типами записей, таксономиями и полями.
- Toolset Types — коммерческий плагин с расширенными возможностями.
Эти плагины позволяют быстро настроить структуру сайта и затем использовать созданные таксономии в шаблонах и запросах.
Запросы WP_Query с использованием кастомных таксономий
Для вывода постов с определенной таксономией используется параметр tax_query в WP_Query. Например, чтобы получить все посты с жанром «боевик»:
$query = new WP_Query(array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'genre',
'field' => 'slug',
'terms' => 'boevik',
),
),
));
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
echo '<h2>' . get_the_title() . '</h2>';
}
wp_reset_postdata();
} else {
echo 'Посты не найдены';
}Это позволит вывести только записи, относящиеся к нужному жанру.
Оптимизация и советы по работе с кастомными таксономиями
При использовании кастомных таксономий учитывайте следующие моменты:
- Для древовидных таксономий используйте
hierarchical => true, чтобы создать удобную структуру и навигацию. - Указывайте параметр
show_admin_column => trueдля удобства управления в админке. - Регулярно проверяйте корректность ЧПУ и ссылок, используйте
flush_rewrite_rules()после регистрации новых таксономий, например при активации плагина. - Используйте кэширование запросов с таксономиями для ускорения работы сайта.
- Не забывайте про безопасность и проверку прав пользователя при выводе и изменении терминов.