Як приклад, розглянемо невеликий програмний код, який реалізує дерево з прикріпленими до нього фруктами. Де дерево ('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 можна знайти в кодексі WordPress.
Зараз я хочу звернути вашу увагу на ключ ['rewrite']['hierarchical'], саме він відповідає за вкладеність посилань. Тобто, якщо ['rewrite']['hierarchical'] дорівнює true, то наші посилання матимуть вигляд — ‘мій-сайт/tree/gilka-1/gilka-1-1/’.
Якщо ж ['rewrite']['hierarchical'] буде false, то посилання будуть без вкладеності/батьківських слагів, а саме — ‘мій-сайт/tree/gilka-1-1/’.
Також не слід плутати параметр ['rewrite']['hierarchical'] з ['hierarchical']. Останній визначає “тип” таксономії, за аналогією з дефолтними категоріями та мітками записів. Якщо останній встановлено як true, то наша кастомна таксономія матиме вигляд категорій, і її можна буде зробити вкладеною (як у нашому прикладі). Якщо ж false — то вона матиме вигляд міток.
