Як кастомні категорії зробити вкладеними

Як кастомні категорії зробити вкладеними

Як приклад, розглянемо невеликий програмний код, який реалізує дерево з прикріпленими до нього фруктами. Де дерево ('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 — то вона матиме вигляд міток.

Пости на схожі теми

З вашим WordPress сайтом проблеми? потрібний додатковий функціонал? нестандартний плагін чи згорнути нову сторінку?
Тоді напишіть мені через форму зворотного зв'язку, і я намагатимусь вам допомогти.

Напишіть коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *