Как создать и использовать кастомные таксономии в WordPress

Кастомные таксономии в 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, которые значительно ускорят процесс.

Как использовать REST API для создания кастомных эндпоинтов в WordPress
10.12.2025
Автоматическое обновление данных в реальном времени в WordPress
01.12.2025
WP-Cron не работает: как исправить проблему в WordPress
15.11.2025
Как создать автоматическое сохранение поста через AJAX в WordPress
14.01.2026
Как добавить свои свойства в метаданные постов WordPress
11.11.2025