Кастомные таксономии в WordPress позволяют организовывать контент более гибко, чем стандартные категории и метки. В этой статье мы подробно разберем, как создавать собственные таксономии, как их использовать в админке и на фронтенде, а также приведем примеры кода и рекомендации по работе с ними.
Что такое кастомные таксономии и зачем они нужны
Таксономии — это способ группировки записей. Стандартно WordPress предлагает две таксономии: категории и метки. Но зачастую этого недостаточно, особенно если у вас сложный сайт с разнообразным контентом. Например, для сайта с каталогом товаров можно создать таксономии «Бренд», «Материал» или «Страна производства».
Использование кастомных таксономий позволяет:
- Лучше структурировать контент и улучшить навигацию.
- Создавать фильтры и сортировки по дополнительным параметрам.
- Упрощать поиск нужной информации пользователям.
- Оптимизировать работу с большими объемами данных.
Знание работы с таксономиями — важный навык для разработчика WordPress.
Создание кастомной таксономии через функцию wpdemo_register_custom_taxonomy
Для регистрации кастомной таксономии в WordPress используется функция register_taxonomy(). Мы создадим обертку с префиксом сайта — wpdemo_register_custom_taxonomy, чтобы избежать конфликтов.
function wpdemo_register_custom_taxonomy() {
$labels = array(
'name' => _x('Бренды', 'taxonomy general name'),
'singular_name' => _x('Бренд', 'taxonomy 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' => 'brand'),
);
register_taxonomy('brand', array('post'), $args);
}
add_action('init', 'wpdemo_register_custom_taxonomy');В этом примере создается таксономия «Бренд» для стандартного типа записи «post». Опция hierarchical определяет, будет ли таксономия вести себя как категории (иерархическая) или как метки (неиерархическая).
Разбор параметров register_taxonomy
Параметры важны для правильного отображения и работы таксономии:
hierarchical— true для категорий, false для меток.labels— массив с названиями и подписями, отображаемыми в админке.show_ui— отображение в админке.show_admin_column— добавляет колонку с таксономией в список записей.query_var— разрешает использование таксономии в URL-запросах.rewrite— настройки ЧПУ (человеко-понятных урлов).
Как добавить кастомную таксономию к пользовательскому типу записи
Если на сайте есть кастомный тип записи, например, «product», то к нему можно прикрепить таксономию, изменив второй параметр функции register_taxonomy:
register_taxonomy('brand', array('product'), $args);Также можно добавить таксономию к нескольким типам одновременно:
register_taxonomy('brand', array('product', 'post'), $args);Важно убедиться, что кастомный тип записи зарегистрирован до вызова функции регистрации таксономии.
Вывод записей с определенной кастомной таксономией на фронтенде
Чтобы вывести записи, относящиеся к нужному бренду, можно использовать класс WP_Query с параметром tax_query:
$args = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'brand',
'field' => 'slug',
'terms' => 'nike',
),
),
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
echo '<h2>' . get_the_title() . '</h2>';
the_excerpt();
}
wp_reset_postdata();
} else {
echo 'Публикаций не найдено';
}В этом примере выводятся все посты с таксономией «brand» и термином «nike».
Использование таксономий в шаблонах
Для вывода списка терминов таксономии можно использовать функцию get_terms():
$brands = get_terms(array(
'taxonomy' => 'brand',
'hide_empty' => false,
));
if (!empty($brands) && !is_wp_error($brands)) {
echo '<ul>';
foreach ($brands as $brand) {
echo '<li>' . esc_html($brand->name) . '</li>';
}
echo '</ul>';
}Полезные плагины для работы с кастомными таксономиями в WordPress
Если вы не хотите писать код вручную, существуют удобные плагины для создания и управления кастомными таксономиями:
- Custom Post Type UI — мощный и популярный плагин для регистрации кастомных типов записей и таксономий через интерфейс без кода.
- Toolset Types — расширенный плагин с возможностями для сложных структур данных и интеграцией с визуальными конструкторами.
- Pods — позволяет создавать кастомные типы записей, таксономии и поля, а также связывать их между собой.
Все эти плагины имеют бесплатные версии и подходят для большинства задач.
Особенности и подводные камни при работе с кастомными таксономиями
Обратите внимание на следующие моменты:
- После регистрации таксономии может потребоваться сбросить правила перезаписи (Permalinks) — зайдите в Настройки → Постоянные ссылки и сохраните их заново.
- При изменении слага таксономии проверьте, что старые URL работают корректно или настроены редиректы.
- Иерархические таксономии ведут себя как категории, умеют иметь родителей и детей, неиерархические — как метки, только плоский список.
- Если создаете таксономию для кастомного типа записи, убедитесь, что она регистрируется после типа записи.
- Для сложных фильтров используйте правильные параметры WP_Query, чтобы избежать ошибок и потери производительности.
Пример создания плагина для кастомной таксономии на базе wpdemo
Для удобства создания таксономии можно оформить код в плагин. Создайте файл wpdemo-custom-taxonomy.php в папке wp-content/plugins/wpdemo-custom-taxonomy/ со следующим содержимым:
<?php
/**
* Plugin Name: WPDemo Custom Taxonomy
* Description: Регистрация кастомной таксономии «Бренды»
* Version: 1.0
* Author: WPDemo
*/
function wpdemo_register_custom_taxonomy() {
$labels = array(
'name' => _x('Бренды', 'taxonomy general name'),
'singular_name' => _x('Бренд', 'taxonomy 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' => 'brand'),
);
register_taxonomy('brand', array('post'), $args);
}
add_action('init', 'wpdemo_register_custom_taxonomy');
Активируйте плагин через админку и пользуйтесь своей таксономией.
Если хотите расширить функционал, можно добавить мета-поля к терминам с помощью плагина Advanced Custom Fields или самостоятельно через хуки WordPress.
Заключение
Кастомные таксономии — мощный инструмент для структурирования данных в WordPress. Их использование позволяет создавать удобные фильтры, улучшать UX и SEO сайта. В статье приведены примеры регистрации таксономий через код, способы вывода и рекомендации по работе с ними.
Для более удобной работы рекомендую ознакомиться с плагинами Custom Post Type UI и Pods, которые значительно ускорят процесс.