Таблица wp_term_taxonomy
Таблица wp_term_taxonomy
является центральной таблицей в системе таксономий WordPress. Она определяет, к какой таксономии (категория, метка, пользовательская таксономия) принадлежит каждый термин из таблицы wp_terms
, а также хранит дополнительную информацию об этой связи, такую как описание, количество записей и родительский термин.
Поля
Поле | Тип данных | Описание |
---|---|---|
term_taxonomy_id |
bigint unsigned |
Уникальный идентификатор записи в этой таблице (первичный ключ, автоинкремент). |
term_id |
bigint unsigned |
ID термина из таблицы wp_terms . Внешний ключ, связывающий таксономию с конкретным термином.
|
taxonomy |
varchar(32) |
Название таксономии. Стандартные значения: category (рубрики), post_tag (метки). Также здесь хранятся названия всех пользовательских таксономий.
|
description |
longtext |
Текстовое описание термина в рамках данной таксономии. Например, описание рубрики, которое можно задать при ее редактировании. |
parent |
bigint unsigned |
ID родительского термина из этой же таксономии. Позволяет создавать иерархические структуры (например, подрубрики внутри рубрик). Для терминов верхнего уровня равен 0 .
|
count |
bigint |
Количество записей (постов, страниц и т.д.), связанных с данным термином в рамках этой таксономии. Это значение автоматически обновляется WordPress при публикации, обновлении или удалении записей. |
Как это работает
Система таксономий WordPress состоит из трех основных таблиц:
wp_terms
: хранит сами термины (их названия и slugs).wp_term_taxonomy
: определяет, к какой таксономии принадлежит термин и хранит мета-данные (текущая таблица).wp_term_relationships
: связывает термины с объектами (записями, страницами).
Один и тот же термин из wp_terms
может принадлежать разным таксономиям. Например, термин "Новости" может быть как рубрикой (category
), так и меткой (post_tag
). Для каждого такого случая в wp_term_taxonomy
создается отдельная запись с одним и тем же term_id
, но разным значением в поле taxonomy
.
Поле count
является производным и обновляется ядром WordPress. Прямое изменение этого значения в базе данных может привести к некорректной работе счетчиков. Для сброса счетчиков следует использовать функцию wp_update_term_count_now()
или плагины для пересчета таксономий.
Пример SQL-запроса
Выбрать все рубрики (категории) с их описанием и количеством записей, отсортированные по популярности:
SELECT t.name, t.slug, tt.description, tt.count
FROM wp_terms t
INNER JOIN wp_term_taxonomy tt ON (t.term_id = tt.term_id)
WHERE tt.taxonomy = 'category'
ORDER BY tt.count DESC;
Найти все дочерние термины (подрубрики) для родительской рубрики с ID равным 5
:
SELECT t.name, tt.term_taxonomy_id
FROM wp_terms t
INNER JOIN wp_term_taxonomy tt ON (t.term_id = tt.term_id)
WHERE tt.taxonomy = 'category' AND tt.parent = 5;
Смотрите также
-
таблицу
wp_terms
,
которая хранит названия и slugs терминов -
таблицу
wp_term_relationships
,
которая связывает термины с записями и другими объектами -
таблицу
wp_termmeta
,
которая позволяет хранить произвольные мета-данки для терминов -
таблицу
wp_posts
,
которая хранит записи, связанные с терминами