
Таксономии в WordPress представляют собой механизм категоризации и структурирования контента. Системные таксономии включают категории и метки, но разработчики могут создавать кастомные таксономии через функцию register_taxonomy(), что позволяет формировать логическую иерархию для любых типов записей.
Каждая таксономия хранится в базе данных WordPress в таблицах wp_terms, wp_term_taxonomy и wp_term_relationships. Такой подход обеспечивает быстрый поиск и фильтрацию контента без дублирования данных, что критично при работе с сайтами, содержащими тысячи записей.
Для эффективной организации контента рекомендуется использовать таксономии с ясной структурой: категории – для общих групп, метки – для уточняющих характеристик. При создании кастомных таксономий важно учитывать slug, иерархию и возможность включения их в REST API, чтобы обеспечить совместимость с темами и плагинами.
Таксономии также влияют на SEO, так как каждая категория и тег автоматически получает собственный архив с уникальным URL. Оптимизация структуры таксономий повышает индексируемость страниц и улучшает внутреннюю перелинковку сайта, что повышает видимость в поисковых системах.
Отличия категорий и меток: когда использовать каждую

Категории структурируют сайт на крупные тематические блоки:
- Используются для группировки постов по основным направлениям контента.
- Иерархичны: можно создавать подкатегории для детализации тем.
- Каждый пост должен принадлежать хотя бы к одной категории.
- Помогают пользователю и поисковым системам понять, о чём основной контент сайта.
- Примеры: «Новости», «Обзоры техники», «Рецепты».
Метки более гибкие и описательные:
- Не имеют иерархии – каждая метка существует отдельно.
- Используются для уточнения характеристик поста, темы или деталей, не покрываемых категорией.
- Позволяют создавать перекрёстные связи между постами разных категорий.
- Примеры: «2025», «без глютена», «iPhone 15», «советы по SEO».
Рекомендации по использованию:
- Категории выбирайте как основную навигацию: 5–10 ключевых блоков достаточно для крупного сайта.
- Метки применяйте для детальной фильтрации: не более 20–30 меток на сайт для предотвращения размывания структуры.
- Если контент можно объединить по логике «основная тема → подтема», используйте категорию и подкатегорию.
- Для описания свойств, особенностей или дополнительных тегов поста используйте метки.
- Не дублируйте категории в виде меток – это усложняет навигацию и SEO.
Правильное разделение категорий и меток повышает удобство поиска информации, улучшает внутреннюю перелинковку и упрощает масштабирование контента.
Создание пользовательских таксономий через functions.php
Для регистрации пользовательской таксономии в WordPress используется функция register_taxonomy(), которую помещают в файл functions.php вашей темы или дочерней темы. Вызов функции должен быть привязан к хуку init для корректной инициализации.
Пример создания таксономии «Жанры» для кастомного типа записи «Книги»:
add_action('init', function() {
register_taxonomy('genre', 'book', [
'labels' => [
'name' => 'Жанры',
'singular_name' => 'Жанр',
'search_items' => 'Поиск жанров',
'all_items' => 'Все жанры',
'edit_item' => 'Редактировать жанр',
'add_new_item' => 'Добавить новый жанр'
],
'hierarchical' => true,
'show_ui' => true,
'show_in_rest' => true,
'rewrite' => ['slug' => 'genre']
]);
});
Параметр hierarchical определяет древовидную структуру таксономии: true делает её похожей на категории, false – на метки. show_in_rest активирует поддержку Gutenberg и REST API. Параметр rewrite задаёт слаг для URL, что облегчает создание ЧПУ.
Для нескольких таксономий достаточно повторять вызов register_taxonomy() с уникальными идентификаторами. Рекомендуется использовать префиксы для избежания конфликтов с плагинами и ядром WordPress.
После регистрации пользовательской таксономии можно добавлять термины через админ-панель или программно с помощью wp_insert_term(), обеспечивая структурированную организацию контента и фильтрацию на фронтенде.
Присвоение таксономий постам и страницам вручную и автоматически
Автоматическое присвоение таксономий реализуется через фильтры и хуки, например save_post. С помощью функции wp_set_post_terms($post_id, $terms, $taxonomy, $append) можно динамически назначать термины на основе категории контента, метаданных или анализа текста поста. Для массовой классификации полезно применять плагин автоматизации или WP-CLI команды: wp post term set <ID> <taxonomy> <term>.
При автоматическом присвоении важно учитывать существующие термины, чтобы не перезаписывать вручную установленные категории. Рекомендуется использовать флаг $append = true в wp_set_post_terms для добавления новых терминов без удаления предыдущих. Для сложных правил можно подключать библиотеки NLP или регулярные выражения для извлечения ключевых слов из контента и сопоставления их с таксономиями.
Для страниц, по умолчанию не поддерживающих рубрики и метки, необходимо зарегистрировать таксономию с аргументом 'object_type' => array('page'). После этого ручное и автоматическое присвоение работает аналогично постам. Практическая рекомендация: ограничивать автоматическое добавление таксономий до 2–3 уровней глубины, чтобы сохранить читаемость структуры и SEO-потенциал сайта.
Контроль за присвоением таксономий можно осуществлять через отчетность: функция get_the_terms($post_id, $taxonomy) позволяет получать текущие термины и сравнивать их с планируемыми, предотвращая дублирование и ошибочные назначения.
Пример использования the_terms():
<?php the_terms( get_the_ID(), 'category', 'Категории: ', ', ' ); ?>
Функция принимает четыре аргумента: ID поста, имя таксономии, текст перед списком и разделитель между элементами. Это позволяет создавать динамичные списки без дополнительных запросов к базе.
Использование get_the_terms() для полного контроля:
<?php
$terms = get_the_terms( get_the_ID(), 'product_cat' );
if ( $terms && ! is_wp_error( $terms ) ) {
foreach ( $terms as $term ) {
echo '<a href="' . get_term_link( $term ) . '">' . $term->name . '</a> ';
}
}
?>
Пример интеграции в таблицу для сравнения таксономий:
| Функция | Возвращает | Применение | |
|---|---|---|---|
| the_terms() | Низкий (только разделители и префикс) | ||
| get_the_terms() | Массив объектов таксономии | Высокий (можно строить кастомный HTML) | |
| the_category() | Список категорий поста | Низкий | Стандартные блоги и архивы |
| the_tags() | Список меток поста | Средний (разделитель, префикс, суффикс) |
При работе с пользовательскими таксономиями рекомендуется использовать get_the_terms() для возможности фильтрации, сортировки и добавления HTML-структуры. Для стандартных категорий и тегов удобнее применять the_terms(), the_category() или the_tags(), чтобы минимизировать код.
Фильтрация контента по таксономиям с помощью WP_Query
WP_Query позволяет получать записи по заданным условиям, включая фильтрацию по таксономиям. Основной параметр для этого – tax_query, который принимает массив с конкретными правилами.
Пример фильтрации записей типа post по категории news:
$query = new WP_Query([
'post_type' => 'post',
'tax_query' => [[
'taxonomy' => 'category',
'field' => 'slug',
'terms' => 'news'
]]
]);
Для нескольких условий используется логика relation с возможными значениями AND или OR. Это позволяет комбинировать фильтры по разным таксономиям.
Пример запроса, выбирающего записи с тегом tech и категорией reviews:
$query = new WP_Query([
'post_type' => 'post',
'tax_query' => [
'relation' => 'AND',
[
'taxonomy' => 'category',
'field' => 'slug',
'terms' => 'reviews'
],
[
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => 'tech'
]
]
]);
Для оптимизации запросов рекомендуется указывать точный тип поля: 'field' => 'term_id' ускоряет выборку при больших базах данных, а 'operator' позволяет использовать условия IN, NOT IN и AND для более точной фильтрации.
WP_Query с tax_query поддерживает кастомные таксономии, что позволяет создавать сложные и точные выборки контента без дополнительных SQL-запросов. Такой подход упрощает управление контентом и интеграцию с фильтрами на фронтенде.
Импорт и экспорт таксономий при переносе сайта
Импорт выполняется через Инструменты → Импорт. Если используется XML-файл, созданный стандартным экспортом WordPress, необходимо установить плагин WordPress Importer. При импорте стоит включить опцию сохранения идентификаторов таксономий, чтобы ссылки на посты оставались корректными и не создавались дубликаты.
Для сайтов с большими объемами данных рекомендуется применять плагины вроде WP All Import / WP All Export. Они позволяют экспортировать таксономии в CSV или XML, редактировать их структуру и импортировать на другой сайт с точным соответствием иерархии терминов. При работе с пользовательскими таксономиями важно убедиться, что на новом сайте зарегистрированы те же таксономии через функцию register_taxonomy() до выполнения импорта.
Если перенос выполняется через базу данных, экспорт таблиц wp_terms, wp_term_taxonomy, wp_term_relationships гарантирует сохранение всех связей таксономий с контентом. После импорта SQL-запросом следует проверить наличие совпадений ID терминов, чтобы избежать конфликтов с уже существующими записями.
Для минимизации ошибок рекомендуется перед импортом провести тестовую загрузку на локальном сервере или отдельной тестовой среде. Это позволяет проверить корректность структуры иерархии, наличие всех терминов и их привязку к постам без риска нарушить работу живого сайта.
Вопрос-ответ:
Что такое таксономии в WordPress и зачем они нужны?
Таксономии — это система классификации контента на сайте. Они позволяют объединять записи по общим признакам. Например, стандартные таксономии WordPress — это категории и метки. Категории обычно используются для крупной структуры сайта, а метки помогают обозначать конкретные темы или характеристики постов.
Чем категории отличаются от меток?
Категории представляют собой иерархическую структуру, где одна категория может включать подкатегории. Это удобно для организации основных разделов сайта, например «Новости» или «Обзоры». Метки не имеют иерархии и применяются для пометки отдельных аспектов контента, чтобы пользователи могли находить материалы по конкретным темам, например «SEO», «WordPress-плагины».
Можно ли создавать свои таксономии в WordPress?
Да, WordPress позволяет создавать пользовательские таксономии для любых типов записей. Это делается с помощью функции register_taxonomy в коде темы или плагина. Пользовательские таксономии дают возможность группировать контент по специфическим критериям, которые не покрывают стандартные категории и метки. Например, можно создать таксономию «Жанры» для записей о книгах или фильмах.
Как таксономии помогают пользователям сайта находить контент?
Таксономии создают дополнительную навигацию по сайту. Если посты объединены в категории или имеют метки, посетители могут перейти к странице с другими материалами той же категории или с той же меткой. Это повышает удобство использования сайта и помогает удерживать читателей, так как они могут легко переходить к связанным статьям.
Какие ошибки часто допускают при использовании таксономий?
Частые ошибки включают чрезмерное использование меток, когда они повторяют категории, создание слишком большого числа категорий без структуры, и отсутствие логики в именовании. Все это может привести к путанице и усложнить поиск информации для пользователей. Оптимальная стратегия — тщательно продумывать иерархию категорий и использовать метки только для уточнения тем.
