Как создать таксономию в WordPress и привязать её к записям

Если рубрик и тегов на сайте уже не хватает, в WordPress можно завести собственную таксономию и использовать её для более точной структуры контента. Это нормальный путь для каталогов, портфолио, обзоров, базы знаний, рецептов, недвижимости и любых проектов, где записи нужно группировать не по одной оси, а по нескольким признакам.

Сама идея простая: таксономия — это способ классифицировать записи. В WordPress по умолчанию уже есть две таксономии для записей: рубрики и метки. Но вы можете создать свою, например жанры, типы услуг, авторы, локации или уровни сложности, и привязать её к записям через код.

Когда собственная таксономия действительно нужна

Создавать новую таксономию имеет смысл, если рубрики и теги начинают мешать, а не помогать. Типичный пример — сайт с обзорами, где рубрики отвечают за темы статей, а отдельная таксономия нужна для брендов, форматов или категорий товаров. Или блог с рецептами, где рубрики делят материалы по разделам сайта, а таксономия хранит кухню, тип блюда или способ приготовления.

Не стоит делать таксономию только потому, что это «красиво» или «правильно по архитектуре». Если значение не нужно фильтровать, выводить в архиве или использовать в шаблоне, иногда достаточно обычного произвольного поля. Таксономия полезна именно тогда, когда вам нужен набор повторно используемых терминов с архивными страницами и удобной фильтрацией.

Как создать таксономию через код

В WordPress собственные таксономии обычно регистрируют в теме или в небольшом плагине. Для рабочей установки лучше использовать плагин, если таксономия должна переживать смену темы. Если она нужна только для конкретного проекта и вы контролируете тему, код можно добавить в functions.php. На практике безопаснее вынести это в отдельный плагин или в mu-plugin, чтобы не потерять структуру при обновлении темы.

Перед изменениями сделайте резервную копию сайта и базы данных. Регистрация таксономии сама по себе не удаляет данные, но ошибки в коде могут сломать админку или фронтенд.

Ниже рабочий пример регистрации иерархической таксономии genre для стандартных записей post. Иерархическая таксономия ведёт себя как рубрики: в ней можно делать родительские и дочерние термины.

add_action('init', function () {
    register_taxonomy('genre', ['post'], [
        'labels' => [
            'name' => 'Жанры',
            'singular_name' => 'Жанр',
            'search_items' => 'Искать жанры',
            'all_items' => 'Все жанры',
            'edit_item' => 'Редактировать жанр',
            'update_item' => 'Обновить жанр',
            'add_new_item' => 'Добавить жанр',
            'new_item_name' => 'Название нового жанра',
            'menu_name' => 'Жанры',
        ],
        'public' => true,
        'hierarchical' => true,
        'show_ui' => true,
        'show_admin_column' => true,
        'show_in_rest' => true,
        'rewrite' => ['slug' => 'genre'],
    ]);
});

Здесь важны несколько параметров. hierarchical определяет, будет ли таксономия похожа на рубрики или на теги. show_ui включает интерфейс в админке. show_admin_column добавляет колонку с терминами в список записей. show_in_rest нужен, если вы работаете с редактором блоков или используете REST API. rewrite задаёт человекопонятный URL для архивов терминов.

Если вы хотите привязать таксономию не только к записям, а, например, ещё и к произвольному типу записи, во втором аргументе передайте массив нужных типов. Например, ['post', 'book'], если у вас уже есть CPT book.

Как привязать таксономию к записям

В примере выше привязка уже задана во втором аргументе register_taxonomy(): ['post']. Это и есть связь таксономии с записями. После регистрации WordPress начнёт показывать новый блок в редакторе записи и позволит назначать термины.

Если таксономия уже создана, но не отображается в редакторе, проверьте три вещи:

  • таксономия зарегистрирована именно для post или нужного типа записи;
  • включён параметр show_ui;
  • для редактора блоков включён show_in_rest.

Для старого классического редактора show_in_rest не обязателен, но для современного интерфейса он обычно нужен. Если вы используете плагин или тему, которые отключают часть стандартных метабоксов, это тоже может влиять на отображение.

Как сделать таксономию не иерархической, как теги

Не каждая таксономия должна быть похожа на рубрики. Если вам нужен просто набор меток без родительских уровней, поставьте hierarchical => false. Тогда термины будут работать ближе к тегам: без вложенности, с более свободным вводом и без дерева.

Это удобно для признаков, которые не образуют строгую структуру: бренды, форматы, способы доставки, уровни доступа. Для таких случаев иерархия только мешает.

Что проверить после добавления кода

После сохранения кода откройте админку WordPress и проверьте, появился ли новый раздел в меню и блок в редакторе записи. Затем создайте несколько терминов и назначьте их одной или нескольким записям. На фронтенде стоит проверить три вещи: сохраняется ли термин у записи, открывается ли архив термина и не даёт ли URL 404.

Если архив термина не открывается, часто помогает повторное сохранение настроек постоянных ссылок в админке. Это сбрасывает правила перезаписи. Делать это нужно после добавления новой таксономии или изменения её rewrite, иначе WordPress может не увидеть новый маршрут.

Если вы меняли код в теме, а потом переключили тему, таксономия исчезнет из админки, хотя термины в базе останутся. Именно поэтому для постоянной структуры лучше использовать плагин, а не файл темы.

Как вывести таксономию в шаблоне записи

Когда таксономия уже работает в админке, её обычно нужно показать на сайте: в карточке записи, в списке материалов или на странице архива. Для этого можно использовать стандартные функции WordPress. Например, чтобы вывести термины таксономии genre у текущей записи, подойдёт такой код:

<?php
$terms = get_the_terms(get_the_ID(), 'genre');
if ($terms && ! is_wp_error($terms)) {
    echo '<ul class="post-genres">';
    foreach ($terms as $term) {
        echo '<li><a href="' . esc_url(get_term_link($term)) . '">' . esc_html($term->name) . '</a></li>';
    }
    echo '</ul>';
}
?>

Этот вариант безопасен для вывода в шаблоне: он проверяет, что термины есть, и экранирует ссылку и название. Если у записи может быть несколько терминов, они выведутся списком. Если нужен только один термин, логику можно упростить.

Типичные ошибки при создании таксономии

Чаще всего проблемы появляются не в самой регистрации, а в деталях. Вот что стоит проверить в первую очередь:

  • Неверный объект привязки. Таксономия зарегистрирована для другого типа записи, а вы ищете её в post.
  • Отсутствует show_in_rest. В редакторе блоков таксономия может не отображаться или вести себя нестабильно.
  • Не сброшены постоянные ссылки. Архивы терминов дают 404, пока не обновлены правила перезаписи.
  • Код добавлен в неподходящее место. Например, в файл, который не загружается на фронтенде, или в тему, которую потом заменили.
  • Слишком общий slug. Если slug совпадает с уже существующим путём, можно получить конфликт URL.

Если сайт большой и структура уже сложная, перед добавлением новой таксономии проверьте, не пересекается ли её slug с рубриками, страницами или другими архивами. Это особенно важно на проектах с большим количеством пользовательских типов записей.

Где собственная таксономия полезнее рубрик и тегов

На реальных проектах собственные таксономии чаще всего используют там, где нужно отделить смысловые признаки от обычной редакционной структуры. Для каталога услуг это могут быть направления работ. Для сайта с кейсами — отрасли клиентов. Для базы знаний — типы материалов. Для новостного проекта — регионы, если рубрики уже заняты тематикой.

Главное преимущество в том, что таксономия даёт не просто метку, а полноценный слой структуры: с архивами, фильтрацией, связью с шаблонами и возможностью использовать её в запросах. Если вам нужно строить подборки, фильтры или навигацию по признаку, который повторяется у многих записей, собственная таксономия обычно удобнее произвольных полей.

Если задача сводится к тому, чтобы просто проставить дополнительный атрибут у записи без архивов и фильтров, таксономия может быть избыточной. Но если контент нужно системно группировать и потом использовать эту группировку в интерфейсе сайта, это правильный инструмент.

В итоге схема такая: регистрируете таксономию через register_taxonomy(), привязываете её к нужному типу записи, включаете отображение в админке и REST при необходимости, затем проверяете архивы и вывод в шаблоне. После этого у вас появляется отдельный, управляемый слой структуры, который не смешивается с рубриками и тегами.

Как удалить лишние скрипты и стили WordPress, чтобы ускорить сайт
16.10.2026
Как добавить хлебные крошки в WordPress без плагина
11.11.2026
Как настроить robots.txt в WordPress без ошибок
13.10.2026
Как убрать пагинацию архивов WordPress из индексации
09.10.2026
Как создать собственный тип записей в WordPress
28.10.2026