# Функция REGISTER_TAXONOMY() │ WP 2.3.0
Функция register_taxonomy() создает новую пользовательскую таксономию в WordPress и позволяет изменять существующие таксономии.
Таксономия — это способ классификации объектов, например, тегов и категорий для постов.
## Зачем нужна эта функция?
С помощью этой функции можно:
- добавлять пользовательские таксономии,
- изменять данные уже зарегистрированных таксономий.
При изменении существующей таксономии значение параметра $object_type будет переписано. Поэтому важно указать его так, как он был задан изначально, или ввести новый объект.
### Рекомендуемое использование
Рекомендуется вызывать эту функцию при инициализации WordPress с помощью следующего кода:
```php
add_action( 'init', 'имя_вашей_функции' );
function имя_вашей_функции(){
register_taxonomy( ... );
}
Зарезервированные имена
Вы не можете использовать зарезервированные имена WordPress для названий таксономии (параметр $taxonomy) или параметра query_var. Например, нельзя использовать 'author' в качестве имени таксономии.
Если вы передадите зарезервированное имя через массив $_GET или $_POST, это может вызвать ошибку 404 без объяснений.
Список запрещенных имен:
- attachment
- attachment_id
- author
- author_name
- calendar
- cat
- category
- category_name
- ...
Полный список зарезервированных имен можно найти в документации WordPress.
Сначала рекомендуется зарегистрировать таксономию, а затем тип поста, к которому эта таксономия будет привязана. Это поможет избежать ошибок и сэкономить время.
// правильный порядок регистрации
register_taxonomy( ... );
register_post_type( ... );
Параметр show_in_rest
Установите параметр show_in_rest в значение true, чтобы панель таксономии появилась в боковой панели редактора блоков (Гутенберг).
Использование функции register_post_type()
Используйте register_post_type(), когда хотите зарегистрировать новый тип поста.
Пример использования
add_action( 'init', 'create_my_taxonomy' );
function create_my_taxonomy(){
register_taxonomy( 'taxonomy', [ 'post' ], [
'label' => '',
'labels' => [
'name' => 'Жанры',
'singular_name' => 'Жанр',
'search_items' => 'Поиск жанров',
'all_items' => 'Все жанры',
'view_item' => 'Просмотр жанра',
'parent_item' => 'Родительский жанр',
'parent_item_colon' => 'Родительский жанр:',
'edit_item' => 'Редактировать жанр',
'update_item' => 'Обновить жанр',
'add_new_item' => 'Добавить новый жанр',
'new_item_name' => 'Новое имя жанра',
'menu_name' => 'Жанр',
'back_to_items' => '← Назад к жанрам',
],
'description' => '',
'public' => true,
'hierarchical' => false,
'rewrite' => true,
] );
}
Параметры функции register_taxonomy
$taxonomy(строка) — название таксономии, должно содержать только строчные буквы, цифры и символы подчеркивания.$object_type(строка/массив) — название типов постов, к которым будет привязана таксономия.$args(массив) — аргументы для настройки таксономии.
Примеры аргументов
label— название таксономии (обычно во множественном числе).description— краткое описание таксономии.public— видимость таксономии в административной панели (true/false).hierarchical— является ли таксономия иерархической.
Примеры создания таксономий
Пример: регистрация нескольких таксономий
Создание двух таксономий "жанры" и "писатели" для постов типа "книга". Поместите этот код в файл functions.php вашей темы.
add_action( 'init', 'create_book_taxonomies' );
function create_book_taxonomies(){
register_taxonomy( 'genre', [ 'book' ], [
'hierarchical' => true,
'labels' => array(
'name' => _x( 'Жанры', 'taxonomy general name' ),
'singular_name' => _x( 'Жанр', 'taxonomy singular name' ),
'search_items' => __( 'Поиск жанров' ),
'all_items' => __( 'Все жанры' ),
'edit_item' => __( 'Редактировать жанр' ),
'add_new_item' => __( 'Добавить новый жанр' ),
'menu_name' => __( 'Жанр' ),
),
'show_ui' => true,
'query_var' => true,
]);
register_taxonomy( 'writer', 'book', [
'hierarchical' => false,
'labels' => array(
'name' => _x( 'Писатели', 'taxonomy general name' ),
'singular_name' => _x( 'Писатель', 'taxonomy singular name' ),
'search_items' => __( 'Поиск писателей' ),
'all_items' => __( 'Все писатели' ),
'edit_item' => __( 'Редактировать писателя' ),
'add_new_item' => __( 'Добавить нового писателя' ),
'menu_name' => __( 'Писатели' ),
),
'show_ui' => true,
'query_var' => true,
]);
}
Заключение
Функция register_taxonomy() — мощный инструмент для создания и управления кастомными таксономиями в WordPress. Используя правильные параметры и структуру, вы сможете улучшить организацию контента на вашем сайте.