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

Терминология

Слово «Taxonomy» пришло к нам, как всегда, из греческого: taxis — расположение, nomos — закон, принцип. Т.е. Таксономия – это принцип расположения чего-либо. Для WordPress – это принцип расположения записей.

Образно, таксономии можно сравнить с папками на компьютере: куда складываются файлы. Заходим в папку, видим список файлов. В WordPress аналогично: заходим в таксономию (рубрику), видим список записей в ней.

Записи привязываются именно к элементам таксономии, а не к самой таксономии. Элементы таксономии называются terms. Для краткости так и будем их называть – термины.

Типы таксономий

При создании таксономии ей задаются свойства. Одно из самых важных свойств – это тип таксономии. Так, таксономии делятся на два типа:

  1. Древовидные – например рубрики
  2. Линейные (плоские) – например метки

Элементы древовидных таксономий могут быть родительскими и дочерними, т.е. одни элементы как бы вложены в другие. А элементы плоских таксономий всегда сами по себе, т.е. все они находятся на одном уровне

Схематически можно изобразить так:

Базовые таксономии WordPress

По умолчанию в WordPress существует пять таксономии:

  • category – рубрики
  • post_tag – метки
  • post_format – скрытая таксономия. Термины этой таксономии – это форматы записей.
  • nav_menu – скрытая таксономия. Термины этой таксономии – это созданные меню навигации, к ним прикрепляются записи (ссылки меню). Если в меню создается произвольная ссылка, то её данные помещаются в таблицу записей (wp_posts) с типом записи nav_menu_item, а запись прикрепляется к термину. Все опции ссылки (URL, анкор и т.д.) хранятся в метаполях записи.
  • link_category – разделы для ссылок, которые отключены в последних версиях.

Создание своих таксономий

Создается таксономия с помощью функции register_taxonomy() или соответствующего плагина, например, «Custom Post Type UI». При этом, в базу данных ничего не добавляется, а создается только описание таксономии и её свойств в глобальной переменной PHP и в правилах ЧПУ. Как только был создан хоть один элемент таксономии, в БД появляется запись о новом термине, а к нему уже можно прикрепить запись.

Структура: таблицы таксономий в БД

В базе данных WordPress за таксономии отвечают, не много не мало, четыре таблицы. Разберем каждую.

wp_terms

Содержит элементы таксономии (термины) и базовую информацию о них. Это основная таблица элементов таксономии. Зависит от таблицы wp_term_taxonomy – они всегда идут в связке.

wp_term_taxonomy

Cодержит дополнительные данные об элементе таксономии, в частности важные из них – это к какой таксономии относится термин (поле taxonomy) и ID связи с объектом (поле term_taxonomy_id).

По большей части эта таблица нужна для поддержания устаревшей логики работы таксономий. Технически таблица wp_term_taxonomy не нужна с версии 4.2, потому что логика хранения данных изменилась и по новой логике поля taxonomydescriptionparent, и count можно поместить в таблицу wp_terms и переписать весь связанный код движка и всех плагинов.

wp_term_relationships

Содержит связи терминов с записями. Таблица показывает какая запись какому термину принадлежит. Только ID термина тут связывается через поле term_taxonomy_id

wp_termmeta

Содержит метаданные терминов. Эта таблица дополняет таблицу wp_terms.

В wp_termmeta принято сохранять любые дополнительные данные термина, например это могут быть СЕО поля: заголовок, описание и что угодно еще.

Структуру таблица имеет такую же, как и другие таблицы метаданных: wp_postmetawp_commentmetawp_usermeta. Логика хранения, кэширования и получения метаданных WP едина для всех типов метаданных: посты, таксы, комменты, юзеры.

По умолчанию, эта таблицы не задействована и всегда пуста. Она используется при расширении базовых возможностей WP, как правило плагинами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *