Пользовательские(произвольные) таксономии в WordPress

Что такое произвольные таксономии в Wordpress?

Произвольные таксономии — это дополнительный способ классификации постов. По умолчанию WordPress группирует посты тип запись по рубрикам и меткам. Рубрики и метки — это предустановленные таксономии WP. В принципе с помощью рубрик и меток можно легко группировать схожий контент.

Однако для более удобной классификации постов можно создать собственные таксономии. К примеру, Вы разрабатываете сайт для агентства недвижимости и можно для постов типа ‘page’ создать на странице блоки с произвольными таксономиями, вроде ‘тип недвижимости’, ‘количество комнат’, ‘этаж’ и т. д. Затем уже при добавлении новых объектов недвижимости непосредственно на странице редактирования отмечать нужные термины(элементы таксономий), напр. ‘тип недвижимости’ — квартира, ‘количество комнат’ — 2…

Как создать пользовательскую таксономию?

Пользовательские или произвольные таксономии регистрируются с помощью register_taxonomy(). Добавьте следующий код в файл functions.php дочерней темы.

add_action('init', 'sfc_create_custom_tax');
function sfc_create_custom_tax() {
	/* $labels содержит массив значений заголовков произвольной таксономии 'flat'*/
	$labels = [
		       	'name'              => 'Квартиры', //Название таксономии во мн.ч
				'singular_name'     => 'Квартира', //Название таксономии в ед. ч
				'search_items'      => 'Найти квартиры', //Текст кнопки поиска по таксономии
				'all_items'         => 'Все квартиры', //Текст для всех элементов таксономии
				'parent_item'       => 'Родитель', // Текст родительского элемента таксономии
				'parent_item_colon' => 'Родитель:',// Текст родительского элемента таксономии, только с двоеточием на конце
				'edit_item'         => 'Редактировать', //Текст для редактирования элемента
				'update_item'       =>  'Обновить', // Текст для обновления элемента
				'add_new_item'      =>  'Добавить новую квартиру',// Текст для добавления нового элемента 
				'new_item_name'     => 'Название новой кватриры', // Текст нового элемента таксономии
				'menu_name'         => 'Квартиры', // Текст новой таксономии в меню

	];
	$args = [
				'hierarchical'      => true, // Сделать таксономию древовидной
				'labels'            => $labels, // Массив заголовков таксономии(показывается в панели управления)
				'show_ui'           => true, // Показывать страницу для добавления элементов новой таксономии
				'show_admin_column' => true, // Отображать колонку с названием таксономии во всех записях
				'query_var'         => true, // Параметр запроса
				'rewrite'           => ['slug' => 'flat'], // Слаг в URL
	];
	register_taxonomy('flat', ['post'], $args);
}

Данный скрипт регистрирует собственную таксономию ‘Квартиры’ для типа поста ‘post’. Новая таксономия создастся в момент срабатывания хука init, то есть, когда сработает событие init выполнится код функции sfc_create_custom_tax().

В результате выполнения кода в панели управления появится новый пункт ‘Квартиры’ 😉.

На странице редактирования записи отобразится новый блок

Источник: https://developer.wordpress.org/plugins/taxonomies/working-with-custom-taxonomies/