Таблица wp_termmeta
Таблица wp_termmeta
является стандартным механизмом WordPress для хранения дополнительной, произвольной информации, связанной с терминами (элементами таксономий). Аналогично тому, как postmeta
расширяет записи, а usermeta
расширяет пользователей, эта таблица позволяет добавлять к терминам любые необходимые поля и данные.
Поля
Поле | Тип данных | Описание |
---|---|---|
meta_id |
bigint(20) unsigned |
Уникальный идентификатор записи метаданных (первичный ключ с автоинкрементом). |
term_id |
bigint(20) unsigned |
Идентификатор термина, к которому привязаны метаданные. Внешний ключ, ссылается на поле term_id в таблице wp_terms .
|
meta_key |
varchar(255) |
Ключ (название) метаполя. Например, color , image_url , seo_description .
|
meta_value |
longtext |
Значение метаполя, связанное с указанным ключом meta_key . Может хранить строки, сериализованные массивы или объекты.
|
Как это работает
Таблица wp_termmeta
была введена в WordPress начиная с версии 4.4. Её появление стандартизировало процесс добавления произвольных полей к терминам (рубрикам, меткам, элементам пользовательских таксономий). До этого разработчикам приходилось использовать собственные таблицы или другие обходные пути.
Для работы с метаданными терминов WordPress предоставляет функции, аналогичные функциям для работы с метаданными записей и пользователей:
add_term_meta()
, get_term_meta()
, update_term_meta()
, delete_term_meta()
.
Эти функции используются плагинами и темами для хранения самой разнообразной информации: изображений для категорий, цвета для тегов, SEO-заголовков и описаний, дополнительных текстовых полей и любой другой связанной с термином data.
Структура "ключ-значение" обеспечивает гибкость. Один термин может иметь множество записей в этой таблице с разными meta_key
. Кроме того, для одного ключа можно хранить несколько значений, если указать соответствующий параметр при добавлении данных.
Пример SQL-запроса
Выбрать все метаданные для термина с ID равным 15
:
SELECT meta_key, meta_value
FROM wp_termmeta
WHERE term_id = 15;
Найти все термины, у которых задано определенное метаполе (например, thumbnail_id
):
SELECT t.name, tm.meta_value
FROM wp_termmeta tm
INNER JOIN wp_terms t ON tm.term_id = t.term_id
WHERE tm.meta_key = 'thumbnail_id';
Смотрите также
-
таблицу
wp_terms
,
которая хранит основные данные терминов -
таблицу
wp_term_taxonomy
,
которая определяет таксономию для терминов -
таблицу
wp_postmeta
,
которая хранит метаданные записей -
таблицу
wp_usermeta
,
которая хранит метаданные пользователей