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

Опубликовано: 2016-09-07

Это вторая статья из серии из 3 частей на тему пользовательских типов записей (CPT). Темы, которые обсуждаются в двух других статьях:

  • Пользовательские типы сообщений и как их создавать
  • Отображение пользовательских типов сообщений — шаблоны и запросы

В этом сообщении блога мы рассмотрим, как создать пользовательскую таксономию и как связать ее с пользовательским типом записи.

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

Начнем с того, что такое таксономия? Мне нравится официальное определение WordPress: таксономия — это способ группировать вещи вместе.

WordPress имеет 4 таксономии по умолчанию: категория, тег, категория ссылок и форматы сообщений. Определенно наиболее часто используемыми из четырех являются категории и теги. Таксономия категорий позволяет группировать сообщения в логические категории, которые вы можете определить самостоятельно. Таксономия тегов очень похожа, но может использоваться более свободно. Одна группа в таксономии называется термином. Каждая таксономия также имеет свою «индексную» страницу, на которой отображаются все сообщения одного и того же термина (URL-адреса этих страниц выглядят так: «таксономия/термин» ).

Таким образом, пользовательская таксономия — это именно то, что следует из названия, это ваша собственная пользовательская группа сообщений (или настраиваемые типы сообщений). Если бы у нас был обзор книги в качестве пользовательского типа публикации, хорошим примером пользовательской таксономии были бы книжные жанры.

Просто освежу память: в предыдущей статье о пользовательских типах сообщений мы использовали пример CPT отзывов для нашей темы Shaka, поэтому мы продолжим использовать его и здесь.

Итак, у нас есть пользовательский тип записей Testimonials. Какие пользовательские таксономии нам нужны? Какие группы будут иметь смысл для этого варианта использования? Мы могли бы сгруппировать отзывы в зависимости от того, к какому сервису они относятся. Таким образом, мы могли бы иметь собственную классификацию услуг (серфинг, кайтинг, дайвинг). Другой пользовательской таксономией могут быть местоположения, где пользователи испытали эту услугу и так далее.

Вы можете создать пользовательскую таксономию для каждой логической группы, о которой вы только можете подумать.

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

Как и в случае с пользовательскими типами сообщений, существует два способа регистрации пользовательской таксономии. Вы можете создать его с помощью плагина или написать немного PHP-кода.

Причины и варианты использования, когда это нужно делать с помощью плагина или с помощью кода, такие же, как и для CPT, поэтому, пожалуйста, ознакомьтесь с первой статьей.

Здесь мы просто рассмотрим, как создать пользовательскую таксономию и как связать ее с пользовательским типом записи.

Создайте пользовательскую таксономию с помощью плагина — простой способ

Мы будем использовать плагин Custom Post Type UI , чтобы зарегистрировать пользовательскую таксономию, точно так же, как мы делали это для CPT в предыдущей статье:

  1. Установите и активируйте плагин Custom Post Type UI с панели управления wp-admin,
  2. После активации плагина станет доступен пункт меню администрирования CPT UI. Перейдите в интерфейс CPT -> Добавить/редактировать таксономию.
  3. Введите слаг таксономии, имя во множественном и единственном числе, а затем вам нужно выбрать, к какому типу записи прикрепить эту недавно созданную пользовательскую таксономию (другие настройки по умолчанию в порядке). В нашем случае мы назвали нашу пользовательскую таксономию: testimonial_service и прикрепили ее к пользовательскому типу записи testimonials, который мы зарегистрировали в предыдущей статье: Добавить таксономию
  4. Если мы теперь посмотрим на экран для создания нового пользовательского типа сообщения с отзывами, вы увидите мета-окно Testimonials Services с правой стороны, а также элемент подменю слева: Добавить-новый-отзыв
  5. Вот и все, теперь мы можем добавить новые сервисы , которые будут группировать отзывы на основе сервисов, к которым они относятся.

Создайте пользовательскую таксономию вручную — требуется кодирование

Да, в заголовке указано, что нужно кодировать, но на самом деле это не так.

Вы можете использовать генератор кода 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. Это будет темой следующего и последнего сообщения в блоге о пользовательских типах сообщений.