Таблица 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,
которая хранит метаданные пользователей