Как использовать функцию REGISTER_TAXONOMY() в WordPress?

# Функция 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 (массив) — аргументы для настройки таксономии.

Примеры аргументов

  1. label — название таксономии (обычно во множественном числе).
  2. description — краткое описание таксономии.
  3. public — видимость таксономии в административной панели (true/false).
  4. 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. Используя правильные параметры и структуру, вы сможете улучшить организацию контента на вашем сайте.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *