Как в WordPress сделать метки, относящиеся только к определённой рубрике?

Добрый день. У меня сайт на WordPress с несколькими рубриками (например, 1, 2, 3). В каждой рубрике используются метки с одинаковыми названиями — 111, 222, 333. Как сделать так, чтобы метки с одинаковыми именами были привязаны к конкретной рубрике, то есть чтобы у рубрики 1 были свои метки 111, 222, 333, у рубрики 2 — свои 111, 222, 333 и т. д., а они не были общими для всех рубрик? <br/> Например, можно ли создать метку 111 и метку 1111 (с разными ID или разными слагами), а затем переименовать 1111 в 111, чтобы они стали разными метками, но с одинаковым названием? <br/> Какие плагины или решения для этого существуют? Инструкции в интернете относятся к старым версиям WP (~3) и не работают в моей версии 6.9.4.
  • 26 марта 2026 г. 10:02
Ответы на вопрос 2
Короткий ответ: в чистом WordPress термины (метки в таксономии post_tag) глобальны для всей таксономии — нельзя «по‑умолчанию» иметь одну и ту же метку 111 отдельно для каждой рубрики. Надёжный вариант — не пытаться «обмануть» WP, а создать отдельную таксономию меток для каждой рубрики или реализовать контекстные (ограниченные) теги программно.

Пояснение и варианты решения

1) Рекомендованный и самый простой для реализации способ — отдельная таксономия для каждой рубрики
- Для рубрики 1 зарегистрируйте таксономию, например tag_cat_1; для рубрики 2 — tag_cat_2 и т.д.
- Таксономии независимы, в них можно иметь термины с одинаковыми именами (каждая таксономия — свой «набор» меток).

Пример кода (в functions.php или плагине):
```php
add_action('init', function() {
    register_taxonomy('tag_cat_1', 'post', [
        'labels' => ['name' => 'Метки рубрики 1'],
        'public' => true,
        'show_in_rest' => true,
        'hierarchical' => false,
    ]);
    register_taxonomy('tag_cat_2', 'post', [
        'labels' => ['name' => 'Метки рубрики 2'],
        'public' => true,
        'show_in_rest' => true,
        'hierarchical' => false,
    ]);
});
```
Если рубрик много или они динамические — можно автоматически зарегистрировать таксономии по списку категорий (в init получить категории и в цикле register_taxonomy).

Плюсы: простая концепция, WordPress корректно работает с таким набором. Минусы: в админке будет несколько блоков меток (по одной таксономии на рубрику); если рубрик очень много — будет громоздко.

2) Если не хотите множество таксономий — «контекстные» метки (сложнее)
- Оставляете одну таксономию post_tag, но заводите для терминов мета‑поле (termmeta) с указанием «контекста/категории».
- Пишете фильтры, чтобы при показе меток на странице рубрики/при выборе меток в админке отображались только метки для этой рубрики; при прикреплении к посту — автоматически выбирать нужный термин в контексте категории.
- Это даёт желаемое поведение, но требует немало кода (фильтры get_terms/get_terms_args, модификация автозаполнения Gutenberg/Classic для тегов и т.д.).

3) Хаки вроде «создать 111 и 1111, потом переименовать» — не надёжны
- WP опирается на slug (и внутренние проверки) и не позволит иметь две одинаковые «идентичные» метки в одной таксономии без конфликта. Попытки «обмануть» системой приводят к неожиданностям (слияние, добавление суффиксов в slug и т.п.). Поэтому этот путь не стоит.

4) Ещё простые альтернативы
- Древовидные/родительские термины: можно сделать родителем название рубрики и создавать дочерние термины — но slug всё равно должен быть уникален в таксономии, это не решит полностью проблему одинаковых имён/slug.
- Префиксы в названии/slug: например «1:111», «2:111». Простая, но «грязная» и видна пользователям.

Плагины и инструменты
- Custom Post Type UI (CPT UI) — удобная утилита для регистрации таксономий без кода (подойдёт, если вы выбираете вариант «отдельная таксономия на рубрику»).
- TaxoPress — менеджер терминов/таксономий, много функций по управлению терминами (можно использовать для организации и фильтрации терминов).
- Term Management Tools — помогает разделять/сливать/копировать термины; полезно при миграции.
- Вариант «Category Specific Tags» (бывший плагин) существовал раньше — но многие такие плагины устарели. Проверяйте совместимость с WP 6.9.4.

Практические рекомендации
- Если рубрик немного (до нескольких десятков) — создайте отдельную таксономию для каждой рубрики (или вручную, или через CPT UI). Это самый надёжный путь.
- Если рубрик очень много и нужен гибкий механизм — реализуйте термин‑meta + фильтры, но лучше поручить реализацию разработчику (надо доработать админский интерфейс, автозаполнение тегов, сохранение и миграцию терминов).
- Не пытайтесь маскировать или переименовывать термины, если задача — хранить независимые наборы «111» для разных рубрик — используйте отдельные таксономии/контекст.

Если хотите, могу:
- Подготовить код для автоматической регистрации таксономий по существующим категориям;
- Или дать пример плагина/кода для «контекстных меток» (termmeta + фильтрация в админке/фронтенде).
Что предпочитаете?
В вордпрессе метки — глобальная таксономия, к рубрикам они не привязываются никак. Трюк с переименованием не прокатит, wp ориентируется на слаг. Если реально нужны отдельные «метки» для каждой рубрики — делай кастомные таксономии через плагин CPT UI или руками через <code>register_taxonomy()</code> .
Похожие вопросы