Создание категорий только для пользовательского типа записей
Всем привет, Я создаю свой собственный тип записей, используя следующий код:
add_action( 'init', 'create_team_post_type' );
function create_team_post_type() {
register_post_type( 'team',
array(
'labels' => array(
'name' => __( 'Teams' ),
'singular_name' => __( 'Team' )
),
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'rewrite' => true,
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => null,
'taxonomies' => array('category'),
'supports' => array('title','editor','thumbnail')
)
);
}
В этом коде я разрешаю использование категорий. Когда я нажимаю на категории, я вижу уже существующие категории из моих обычных записей. Я хотел бы показывать только категории для этого пользовательского типа записей. Кроме того, когда я добавляю новую категорию к пользовательскому типу записей, я хочу, чтобы она применялась только к этому пользовательскому типу записей. Как мне это реализовать?

Я бы сказал, что вам также нужно создать пользовательскую таксономию, если вы хотите ограничить её только одним типом записи. "Категории" по умолчанию уже связаны с записями.
function people_init() {
// создаём новую таксономию
register_taxonomy(
'people',
'post',
array(
'label' => __( 'Люди' ),
'rewrite' => array( 'slug' => 'person' ),
'capabilities' => array(
'assign_terms' => 'edit_guides',
'edit_terms' => 'publish_guides'
)
)
);
}
add_action( 'init', 'people_init' );
Таким образом, если вы назовёте её "team-category", вы сможете использовать это в массиве 'taxonomies' вашего типа записи.
Более конкретный пример:
function tr_create_my_taxonomy() {
register_taxonomy(
'team-category',
'team',
array(
'label' => __( 'Категория' ),
'rewrite' => array( 'slug' => 'team-category' ),
'hierarchical' => true,
)
);
}
add_action( 'init', 'tr_create_my_taxonomy' );

Выглядит хорошо. Как мне отобразить мою пользовательскую таксономию в пользовательском типе записи? Я попытался изменить 'taxonomies' => array('category')
на 'taxonomies' => array('people')
, но это не отображает эти категории.

Убедитесь, что вы заменили 'post' на 'team' в примере кода, если именно там вы хотите, чтобы это отображалось.

Пожалуй, мне стоит быть более понятным. Это отображается там, но когда я добавляю новую запись в пользовательском типе записи, я хочу, чтобы это показывалось в виде чекбоксов, как в стандартном типе записи. Сейчас мне показывается просто поле, как для меток, вместо пользовательских категорий.

Если вам нужен стиль категорий, установите hierarchical в true. По умолчанию false отображает его в стиле меток. Я добавил первый вариант в свой последний пример кода.
