В качестве примера, разберем небольшой программный код реализующий дерево с прикрепленными к нему фруктами. Где дерево ('tree') - это наша кастомная таксономия. А 'fruit' - тип записей определяющий фрукты со всеми параметрами фруктов (цвет, вкус, пр., в статье рассмотрено не будет).
Пример полного кода:
add_action('init', function()
{
register_post_type('fruit', [
'labels' => [
'name' => 'Fruits',
'singular_name' => 'Fruit',
],
'public' => true,
'show_ui' => true,
'has_archive' => true,
'rewrite' => [
'slug' => 'fruit'
],
'query_var' => true,
'hierarchical' => false,
]);
register_taxonomy('tree', ['fruit'], [
'hierarchical' => true,
'labels' => [
'name' => 'Tree',
],
'show_ui' => true,
'query_var' => true,
'rewrite' => [
'hierarchical' => false
],
]);
});Прежде чем регистрировать таксономию, нужно инициализировать тип записи к которой будут крепиться термины новой таксономии. Это можно сделать используя функцию register_post_type:
register_post_type('fruit', [
'labels' => [
'name' => 'Fruits',
'singular_name' => 'Fruit',
],
'public' => true,
'show_ui' => true,
'has_archive' => true,
'rewrite' => [
'slug' => 'fruit'
],
'query_var' => true,
'hierarchical' => false,
]);Далее, нам нужно зарегистрировать таксономию типа “дерево”, и прикрепить к ней тип записи - “фрукты”. Это можно реализовать используя ф-ю register_taxonomy:
register_taxonomy('tree', ['fruit'], [
'hierarchical' => true,
'labels' => [
'name' => 'Tree',
],
'show_ui' => true,
'query_var' => true,
'rewrite' => [
'hierarchical' => true
],
]);Полное описание всех параметров функций register_post_type и register_taxonomy можно найти в кодексе WP.
Сейчас же, я хочу обратить ваше внимание на ключ ['rewrite']['hierarchical'], именно он отвечает за вложенность ссылок. Т.е., если ['rewrite']['hierarchical'], равен true, то наши ссылки будут иметь вид - ‘мой-сайт/tree/vetv-1/vetv-1-1/’.
Если же ['rewrite']['hierarchical'] будет false, то ссылки будут без вложенности/родительских слагов, а именно - ‘мой-сайт/tree/vetv-1-1/’.
Также, не следует путать параметр ['rewrite']['hierarchical'] с ['hierarchical']. Последний определяет “тип” таксономии, по аналогии с дефолтными категориями и метками постов. Если последний установлен как true, то наша кастомная таксономия будет иметь вид категорий, и ее можно будет сделать вложенной (как в нашем примере). Если же false - то будет иметь вид меток.
