Таксономия в WordPress

"Таксономия" - это закон/принцип расположения чего-либо. Говоря о WordPress, под таксономией часто подразумевают расположение записей. А точнее деление по рубрикам и вложенность рубрик друг в друга.

Если вы уже работали с WordPress, то представляете, что рубрики публикаций можно вкладывать друг в друга, как это делают с папками и файлами на компьютере. Таксономии (правила) связывают в WordPress только записи и хранятся отдельно. Фактически, рубрики - это и есть отдельные записи в таблице базы данных. А точнее, для их хранения используются таблицы "wp_term", "wp_term_taxonomy" и "wp_term_relationships". Как можно заметить из названий таблиц, элементы таксономии называются "term".

Таксономии разделяются на два типа: древовидные и линейные (плоские). К древовидным относятся рубрики. К линейным - метки. Древовидные таксономии могут быть как родительскими, так и дочерними (папки и подпапки). А линейные находятся только на одном уровне.

Существуют базовые такономии WordPress, к которым относятся:
  • category - рубрики
  • post_tag - метки
  • post_format - форматы записей
  • nav_menu - определяет меню навигации.
Если в меню создать произвольную ссылку, то в таблице с записями "wp_posts" появится запись с типом "nav_menu_item". Все данные пункта меню (ссылка, анкорный текст) хранятся в метаполях этой записи.
Если появляется необходимость создать свою собственную таксономию, то можно воспользоваться функцией "register_taxonomy":
register_taxonomy( $taxonomy, $object_type, $args );
$taxonomy строка Название таксономии. Может содержать только строчные латинские буквы и подчёркивания. Длина не более 32 символов.
$object_type строка/ массив Название типов постов, к которым относится таксономия. Если указать "post", то у новая возможность классификации (таксономия) появится у обычных публикаций.
$args массив/ строка/ объект Дополнительные аргументы(см. таблицу ниже)
Подробнее стоит остановиться на последнем параметре "$args". Он крайне объёмный и описывает все свойства таксономии. К примеру, название для отображения в панели администрирования или короткое пояснение к ней. Разберём ключи этого массива:
Ключ Тип данных Описание
label строка Название таксономии (будет отображаться в панели администрирования)
description строка Описание таксономии
labels массив Массив с заголовками таксономии. Ключи и значения массива смотреть в следующей таблице.
public логический В положении "true" отображает таксономию в панели администрирования.
show_ui логический В положении "true" отображает блок управления таксономией в панели администрирования.
show_in_menu логический В положении "true" отображает элементы таксономии в меню панели администрирования.
show_in_nav_menus логический В положении "true" отображает элементы таксономии в навигационном меню.
show_tagcloud логический В положении "true" создаёт облако элементов таксономии.
show_in_rest логический В положении "true" включает таксономию в REST API.
rest_base строка Ярлык в REST API. По умолчанию, название таксономии.
rest_controller_class строка Название класса контроллера в REST API
hierarchical логический В положении "true" даёт древовидную таксономию (рубрики). В "false" - линейную (метки).
update_count_callback строка Название функции, которая пересчитывает количество записей под этой таксономией. Значения по умолчанию:
_update_post_term_count для таксономий записей.
_update_generic_term_count для таксономий объектов (к примеру, пользователей).
rewrite логический Возможна ли перезапись данных "true/false"
publicly_queryable логический В положении "true" позволяет пользователям из публичного раздела сайта получить доступ к элементам таксономии
query_var строка/ логический Позволяет добавить/изменить дополнительный запрос.
capabilities массив Права таксономии:
"edit_terms" - изменение, значение по умолчанию: "manage_categories"
"manage_terms" - управление, значение по умолчанию: "manage_categories"
"assign_terms" - добавление, значение по умолчанию: "edit_posts"
"delete_terms" - удаление, значение по умолчанию: "manage_categories"
meta_box_cb строка Callback функция, которая отвечает за отображение таксономии в метабоксе. Значения:
"post_categories_meta_box" - показывать как категории,
"post_tags_meta_box" - показывать как метки,
"false" - не показывать вообще.
meta_box_sanitize_cb callable Функция для фильтрации (очистки) данных при сохранении таксономии.
show_admin_column логический Позволить "true" или запретить "false" автосоздание колонки таксономии в таблице ассоциативного типа записи.
show_in_quick_edit логический Показывать ли в панели быстрого редактирования записи
sort логический Запоминать ли порядок создания терминов. В положении "true", то сортировка идёт по полю "term_order", иначе по "name"
default_term строка/ массив Термин по умолчанию. Чтобы создать термин, указать массив с ключами: "name" (название), "slug" (ярлык), "description" (описание)
_builtin логический В положении "true" означает, что эта таксономия родная для WordPress. Иначе пользовательская (добавлена вручную).
Массив "labels" содержит надписи, которые используются для обозначения блоков и кнопок, чтобы пользователь мог сориентироваться в интерфейсе. Разберём этот массив по ключам и их значениям:
Ключ Описание
name Название таксономии в множественном числе. К примеру, "Метки". По умолчанию _x( 'Post Tags', 'taxonomy general name' ) или _x( 'Categories', 'taxonomy general name' );
singular_name Название для элемента этой таксономии в единственном числе. К примеру, "Метка". По умолчанию _x( 'Post Tag', 'taxonomy singular name' ) или _x( 'Category', 'taxonomy singular name' );
menu_name Текст для названия пункта меню. По умолчанию используется значение из параметра name;
search_items Текст "Поиск меток" или "Поиск категорий" для поиска элемента таксономии. По умолчанию: __( 'Search Tags' ) или __( 'Search Categories' );
popular_items Текст "Популярные метки" или "Популярные категории" для блока популярных элементов. По умолчанию: __( 'Popular Tags' ) или null;
all_items Текст "Все метки" или "Все категории" для списка всех элементов таксономии. По умолчанию: __( 'All Tags' ) или __( 'All Categories' );
parent_item Текст "Родительская категория" для задания родительского элемента таксономии. По умолчанию нет или __( 'Parent Category' );
parent_item_colon Текст "Родительская категория" для задания родительского элемента таксономии. По содержанию аналогичен значению в предыдущем свойстве "parent_item", но с двоеточием в конце. По умолчанию: __( 'Parent Category:' );
edit_item Текст для редактирования данных элемента таксономии. По умолчанию: __( 'Edit Tag' ) или __( 'Edit Category' );
update_item Текст для обновления данных элемента таксономии. По умолчанию: __( 'Update Tag' ) или __( 'Update Category' );
add_new_item Текст для добавления нового элемента таксономии. По умолчанию: __( 'Add New Tag' ) или __( 'Add New Category' );
view_item Текст для просмотра таксономии ("Посмотреть метку" или "Посмотреть категорию").
new_item_name Текст для создания нового элемента таксономии. По умолчанию: __( 'New Tag Name' ) или __( 'New Category Name' );
add_or_remove_items Текст "удаленить или добавить тег", который используется в панели администрирования при отключенном javascript. Только для линейной таксономии. По умолчанию: __( 'Add or remove tags' ) или null;
choose_from_most_used Текст "выберите из часто используемых", который показывается при редактировании публикации. Только для линейной таксономии. По умолчанию: __( 'Choose from the most used tags' ) или null;
popular_items Текст для списка популярных терминов. Только для линейной таксономии. По умолчанию: "Популярные метки".
separate_items_with_commas Текст-предупреждение "Разделяйте метки запятыми". Только для линейной таксономии. По умолчанию: __( 'Separate tags with commas' ) или null.
add_or_remove_items Текст для добавления или удаления терминов. Только для линейной таксономии. По умолчанию: "Добавить или удалить метки".
choose_from_most_used Текст "Выбрать из часто используемых". Только для линейной таксономии.
not_found Текст "не найдено", который будет показан в списке часто используемых терминов, если таковых нет.
Попробуем продемонстрировать код для создания собственной таксономии. Сделаем это для древовидной и линейной структуры, выбрав в качестве объектов жанры книг (древовидное) и авторов книг (линейное). Тогда для создания такономии необходимо в файл functions.php написать следующий код:
<?php
// создание линейной таксономии для авторов книг
register_taxonomy('writer', 'book', array(
   'hierarchical'  => false,
   'show_ui'       => true,
   'query_var'     => true,
   'labels'        => array(
      'name'              => _x('Авторы книг', 'taxonomy general name'),
      'singular_name'     => _x('Автор книги', 'taxonomy singular name'),
      'search_items'      => __('Поиск автора'),
      'popular_items'     => __('Популярные авторы'),
      'all_items'         => __('Все авторы'),
      'parent_item'       => null, // нет родителя
      'parent_item_colon' => null, // нет родителя
      'edit_item'         => __('Изменить данные автора'),
      'update_item'       => __('Обновить данные автора'),
      'add_new_item'      => __('Добавить нового автора'),
      'new_item_name'     => __('Имя нового автора'),
      'menu_name'         => __('Авторы'),
      'add_or_remove_items' => __('Добавить или удалить автора'),
      'choose_from_most_used' => __('Популярные авторы'),
      'separate_items_with_commas' => __('Разделяйте имена авторов запятыми'),
   ),
));

// создание древовидной таксономии для жанров книг
register_taxonomy('genre', array('book'), array(
   'hierarchical'  => true,
   'show_ui'       => true,
   'query_var'     => true,
   'labels'        => array(
      'name'              => _x( 'Жанры книг', 'taxonomy general name' ),
      'singular_name'     => _x( 'Жанр книги', 'taxonomy singular name' ),
      'search_items'      => __('Поиск по жанрам'),
      'all_items'         => __('Все жанры'),
      'parent_item'       => __('Основной жанр'),
      'parent_item_colon' => __('Основной жанр:'),
      'edit_item'         => __('Изменить жанр'),
      'update_item'       => __('Обновит жанр'),
      'add_new_item'      => __('Добавить жанр'),
      'new_item_name'     => __('Название нового жанра'),
      'menu_name'         => __('Жанр'),
   ),
));
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб