Как какстомные категории сделать вложенными

Как какстомные категории сделать вложенными

В качестве примера, разберем небольшой программный код реализующий дерево с прикрепленными к нему фруктами. Где дерево ('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 - то будет иметь вид меток.

Поделиться в соцсетях:
Статьи на похожую тематику

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

Оставить комментарий

Ваш адрес email не будет опубликован.