Как создать пользовательскую таксономию
Опубликовано: 2016-09-07Это вторая статья из серии из 3 частей на тему пользовательских типов записей (CPT). Темы, которые обсуждаются в двух других статьях:
- Пользовательские типы сообщений и как их создавать
- Отображение пользовательских типов сообщений — шаблоны и запросы
В этом сообщении блога мы рассмотрим, как создать пользовательскую таксономию и как связать ее с пользовательским типом записи.
Что такое пользовательская таксономия?
Начнем с того, что такое таксономия? Мне нравится официальное определение WordPress: таксономия — это способ группировать вещи вместе.
WordPress имеет 4 таксономии по умолчанию: категория, тег, категория ссылок и форматы сообщений. Определенно наиболее часто используемыми из четырех являются категории и теги. Таксономия категорий позволяет группировать сообщения в логические категории, которые вы можете определить самостоятельно. Таксономия тегов очень похожа, но может использоваться более свободно. Одна группа в таксономии называется термином. Каждая таксономия также имеет свою «индексную» страницу, на которой отображаются все сообщения одного и того же термина (URL-адреса этих страниц выглядят так: «таксономия/термин» ).
Таким образом, пользовательская таксономия — это именно то, что следует из названия, это ваша собственная пользовательская группа сообщений (или настраиваемые типы сообщений). Если бы у нас был обзор книги в качестве пользовательского типа публикации, хорошим примером пользовательской таксономии были бы книжные жанры.
Просто освежу память: в предыдущей статье о пользовательских типах сообщений мы использовали пример CPT отзывов для нашей темы Shaka, поэтому мы продолжим использовать его и здесь.
Итак, у нас есть пользовательский тип записей Testimonials. Какие пользовательские таксономии нам нужны? Какие группы будут иметь смысл для этого варианта использования? Мы могли бы сгруппировать отзывы в зависимости от того, к какому сервису они относятся. Таким образом, мы могли бы иметь собственную классификацию услуг (серфинг, кайтинг, дайвинг). Другой пользовательской таксономией могут быть местоположения, где пользователи испытали эту услугу и так далее.
Вы можете создать пользовательскую таксономию для каждой логической группы, о которой вы только можете подумать.
Как создать пользовательскую таксономию?
Как и в случае с пользовательскими типами сообщений, существует два способа регистрации пользовательской таксономии. Вы можете создать его с помощью плагина или написать немного PHP-кода.
Причины и варианты использования, когда это нужно делать с помощью плагина или с помощью кода, такие же, как и для CPT, поэтому, пожалуйста, ознакомьтесь с первой статьей.
Здесь мы просто рассмотрим, как создать пользовательскую таксономию и как связать ее с пользовательским типом записи.
Создайте пользовательскую таксономию с помощью плагина — простой способ
Мы будем использовать плагин Custom Post Type UI , чтобы зарегистрировать пользовательскую таксономию, точно так же, как мы делали это для CPT в предыдущей статье:
- Установите и активируйте плагин Custom Post Type UI с панели управления wp-admin,
- После активации плагина станет доступен пункт меню администрирования CPT UI. Перейдите в интерфейс CPT -> Добавить/редактировать таксономию.
- Введите слаг таксономии, имя во множественном и единственном числе, а затем вам нужно выбрать, к какому типу записи прикрепить эту недавно созданную пользовательскую таксономию (другие настройки по умолчанию в порядке). В нашем случае мы назвали нашу пользовательскую таксономию: testimonial_service и прикрепили ее к пользовательскому типу записи testimonials, который мы зарегистрировали в предыдущей статье:
- Если мы теперь посмотрим на экран для создания нового пользовательского типа сообщения с отзывами, вы увидите мета-окно Testimonials Services с правой стороны, а также элемент подменю слева:
- Вот и все, теперь мы можем добавить новые сервисы , которые будут группировать отзывы на основе сервисов, к которым они относятся.
Создайте пользовательскую таксономию вручную — требуется кодирование
Да, в заголовке указано, что нужно кодировать, но на самом деле это не так.

Вы можете использовать генератор кода WP для создания пользовательского кода таксономии. Просто щелкайте по вкладкам вверху и вводите сведения о своей пользовательской таксономии. Генератор выведет действительный регистрационный код пользовательской таксономии:
// Register Custom Taxonomy function custom_taxonomy_testimonial_service() { $labels = array( 'name' => _x( 'Testimonial Services', 'Taxonomy General Name', 'text_domain' ), 'singular_name' => _x( 'Testimonial Service', 'Taxonomy Singular Name', 'text_domain' ), 'menu_name' => __( 'Testimonial Services', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'parent_item' => __( 'Parent Item', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'new_item_name' => __( 'New Item Name', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'separate_items_with_commas' => __( 'Separate items with commas', 'text_domain' ), 'add_or_remove_items' => __( 'Add or remove items', 'text_domain' ), 'choose_from_most_used' => __( 'Choose from the most used', 'text_domain' ), 'popular_items' => __( 'Popular Items', 'text_domain' ), 'search_items' => __( 'Search Items', 'text_domain' ), 'not_found' => __( 'Not Found', 'text_domain' ), 'no_terms' => __( 'No items', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), ); $args = array( 'labels' => $labels, 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_admin_column' => true, 'show_in_nav_menus' => true, 'show_tagcloud' => true, ); register_taxonomy( 'testimonial_service', array( 'testimonials' ), $args ); } add_action( 'init', 'custom_taxonomy_testimonial_service', 0 );
Вы можете вставить этот код во вновь созданный плагин или в файл functions.php темы. Я вставил код прямо в файл functions.php, потому что это удобнее для данного примера. Пункт подменю Testimonials Services появился в меню панели администратора Testimonials, и там также есть мета-поле, как на снимке экрана в настройке плагина выше.
Ручная регистрация пользовательской таксономии работает, поэтому давайте проанализируем код и посмотрим, что именно он делает. Структура кода очень похожа на регистрацию пользовательского типа записи в первой статье, но отличается несколькими настройками и вызовами функций:
- Мы подключаем функцию
custom_taxonomy_testimonial_service
к действиюinit
WP, чтобы зарегистрировать пользовательскую таксономию, - Первый блок кода внутри функции представляет собой массив меток, где вы можете изменить слова, которые будут использоваться при создании/редактировании пользовательских таксономий. Совет: я бы порекомендовал вам использовать экранирующие функции интернационализации. Поэтому вместо
_x()
и__()
я бы использовалesc_html_x()
иesc_html__()
, - Второй блок — это массив аргументов/настроек для пользовательской таксономии. Вы можете взглянуть на официальную документацию WP, чтобы увидеть, какие аргументы вы можете установить,
- С помощью
register_taxonomy( 'testimonial_service', array( 'testimonials' ), $args );
call, мы регистрируем пользовательскую таксономиюtestimonial_service
, которая будет «прикрепляться» к пользовательскому типу записиtestimonials
с$args
.
Теперь, когда у нас есть пользовательский тип записи и пользовательская таксономия, нам просто нужно отобразить их на нашем сайте WordPress. Это будет темой следующего и последнего сообщения в блоге о пользовательских типах сообщений.