Таксономии — это то, что выводит WordPress за пределы простой платформы ведения блогов и входит в сферу CMS.
Но как они хранятся в базе данных?
Таксономии и термины — это мощная функция WordPress, которая позволяет вам повысить гибкость своих сайтов. Они связаны с двумя другими типами контента: сообщениями и ссылками, а структура базы данных означает, что это отношение «один ко многим», когда одно сообщение может иметь несколько терминов в нескольких таксономиях, а один термин может быть назначен нескольким публикациям или ссылки.
Я начну с определения их, как и в WordPress, терминология может сбивать с толку!
Определения
Taxonomies
Таксономия — это система категоризации или классификации вещей, обычно иерархическая. Самая известная таксономия — таксономия Линнея, которая используется для классификации живых существ.
В WordPress таксономии используются для классификации ваших данных и группировки их по наборам и подмножествам.
WordPress поставляется с тремя встроенными таксономиями :
- категория
- тег
- категория ссылки
Категории и теги немного похожи на сообщения и страницы в том смысле, что они представляют собой один и тот же тип контента (таксономии), но по умолчанию ведут себя по-разному, поскольку категории являются иерархическими, а теги — нет.
Таксономия категории ссылок работает аналогично тегам и теоретически может использоваться для любого типа объекта, но по умолчанию она не отображается на экране редактирования записи и находится на экране редактирования ссылки, если ссылки были включены.
Вы также можете добавить столько дополнительных таксономий, сколько хотите, используя пользовательские таксономии. Затем они ведут себя аналогично категориям и тегам и имеют термины. Каждая из ваших таксономий имеет тот же статус, что и любая из встроенных таксономий. Это похоже на сравнение между постами и пользовательскими типами постов.
условия
Каждая таксономия будет иметь термины, которые вы используете для сортировки ваших данных. Категория — это просто термин в таксономии категории, а тег — это термин в таксономии тега. При создании таксономий вы будете создавать термины для своих таксономий либо через панель управления WordPress, либо с помощью функции wp_insert_term () .
Термины могут быть очень эффективными в сочетании с пользовательскими запросами: вы можете создавать собственные файлы шаблонов в своих темах или плагинах для отображения сообщений с несколькими терминами, сортировки по терминам, определения терминов по таксономиям и многого другого.
Как WordPress хранит таксономии и термины
Как я описал в руководстве по отношениям между данными, WordPress использует отношение «многие ко многим». Это отношение создается с помощью трех таблиц:
wp_term_relationships
-
wp_term_taxonomy
-
wp_terms
Эти таблицы показаны ниже вместе с таблицами, с которыми они связаны, wp_posts
и wp_links
:
Давайте посмотрим на каждую из таблиц и как она работает.
Таблица wp_terms
В таблице wp_terms
хранятся все отдельные термины для ваших категорий, тегов, категорий ссылок и пользовательских таксономий. В ней всего четыре поля:
-
term_id
— уникальный идентификатор для термина -
name
-
slug
-
term_group
— это поле, которое в настоящее время не используется WordPress, поэтому вы можете спокойно его игнорировать.
Таблица wp_term_taxonomy
В таблице wp_term_taxonomy
хранится больше данных о терминах, а также о таксономиях, в которые они входят. Имеет шесть полей:
-
term_taxonomy_id
хранит идентификатор для записи в этой таблице -
term_id
представляет идентификатор термина, связанный с его записью в wp_terms -
taxonomy
является названием таксономии, в которой термин -
description
-
parent
относится к родительскому термину термина, если таксономия является иерархической и имеет -
count
количество сообщений с термином
Во многих установках WordPress в таблице wp_term_taxonomy
будет по одной записи для каждого термина в таблице wp_terms
, но в некоторых случаях у вас будет более одной записи для каждого термина. Это происходит, когда вы создаете два термина с одинаковым именем и слагом в разных таксономиях, и это означает, что вы можете создать запрос для вывода постов с этим термином в нескольких таксономиях.
Это означает, что отношения между этими двумя таблицами являются однозначными: одна запись в таблице wp_terms
может быть связана с несколькими записями в таблице wp_term_taxonomy
, но каждая запись в wp_term_taxonomy
связана только с одной записью в wp_terms
.
Таблица wp_term_relationships
Таблица wp_term_relationships
имеет решающее значение для создания отношения «многие ко многим» между объектами и терминами. Всего три поля:
-
object_id
связан сpost_id
в таблицеlink_id
илиlink_id
в таблицеwp_links
-
term_taxonomy_id
связан с тем же полем в таблицеwp_term_taxonomy
-
term_order
— порядок, в котором термины были добавлены к объекту. Это используется только в том случае, если вы указали аргумент сортировки как true при регистрации таксономии — по умолчанию используется значение false и значение по умолчанию для этого поля равно 0.
Поскольку каждый объект может быть связан с несколькими записями в таблице wp_term_relationships
, как и каждый термин, это может создавать отношение «многие ко многим».
Резюме
Взаимосвязь между объектами (т.е. сообщениями и ссылками) и терминами является очень мощной, отчасти потому, что это единственное отношение «многие ко многим», используемое WordPress.
Понимание того, как работают эти отношения и где хранятся ключевые данные, поможет вам понять, как работают таксономии и термины, и использовать связанные с ними функции.