Когда у сайта есть CPT «Проекты», а пользователю нужен фильтр по направлениям, чаще всего правильная модель — таксономия с терминами, а не текстовое поле project_category. Таксономия предоставляет связь «многие ко многим» и стандартные инструменты выборки WordPress.
Разница между CPT и таксономией
- CPT определяет тип сущности: проект, отзыв, событие.
- Таксономия определяет классификацию: отрасль, тип проекта, регион.
- Метаполе хранит свойство одной записи: цена, дата, внешний ID.
Пример регистрации
Ниже предполагается, что CPT case_study уже зарегистрирован отдельным плагином. Код помещают в тот же плагин на хуке init.
<?php
add_action( 'init', function () {
register_taxonomy( 'case_sector', array( 'case_study' ), array(
'labels' => array(
'name' => 'Отрасли',
'singular_name' => 'Отрасль',
),
'public' => true,
'show_ui' => true,
'show_in_rest' => true,
'hierarchical' => true,
'rewrite' => array( 'slug' => 'case-sector' ),
) );
} );
Идентификатор таксономии должен быть уникальным: перед внедрением проверьте, что такой taxonomy slug не используется другим компонентом. Если CPT не поддерживает REST, настройте и его отдельно.
SEO-решения для архивов
Термины могут создавать самостоятельные архивы. Но это не означает, что каждый архив нужно индексировать. Для малочисленных или дублирующих подборок подумайте о noindex или отказе от отдельной посадочной страницы. Canonical и индексируемость оцениваются на уровне реального содержимого.
Проверки после установки
- Пересохраните постоянные ссылки в настройках WordPress на staging.
- Создайте несколько терминов и присвойте их тестовым кейсам.
- Проверьте архив термина, хлебные крошки и корректный canonical.
- Убедитесь, что REST API показывает термины только там, где это предусмотрено.
- Проверьте, что при удалении термина данные самих кейсов сохраняются.
При большом количестве атрибутов решите заранее, какие из них должны быть таксономиями, а какие — метаданными. Иначе фильтры и SEO-архивы быстро станут неуправляемыми.
Источник: https://developer.wordpress.org/reference/functions/register_taxonomy/
Материал был полезен?
Помогите нам сделать материалы точнее и понятнее.