В качестве примера, разберем небольшой программный код реализующий дерево с прикрепленными к нему фруктами. Где дерево ('tree') - это наша кастомная таксономия. А 'fruit' - тип записей определяющий фрукты со всеми параметрами фруктов (цвет, вкус, пр., в статье рассмотрено не будет).
Пример полного кода:
add_action('init', function() { register_post_type('fruit', [ 'labels' => [ 'name' => 'Фрукты', 'singular_name' => 'Фрукт', ], 'public' => true, 'show_ui' => true, 'has_archive' => true, 'rewrite' => [ 'slug' => 'fruit' ], 'query_var' => true, 'hierarchical' => false, ]); register_taxonomy('tree', ['fruit'], [ 'hierarchical' => true, 'labels' => [ 'name' => 'Дерево', ], 'show_ui' => true, 'query_var' => true, 'rewrite' => [ 'hierarchical' => false ], ]); });
Прежде чем регистрировать таксономию, нужно инициализировать тип записи к которой будут крепиться термины новой таксономии. Это можно сделать используя функцию register_post_type:
register_post_type('fruit', [ 'labels' => [ 'name' => 'Фрукты', 'singular_name' => 'Фрукт', ], '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' => 'Дерево', ], '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 - то будет иметь вид меток.