Таблица wp_postmeta
Таблица wp_postmeta
является одной из ключевых таблиц в WordPress, которая хранит произвольные дополнительные данные (метаданные), связанные с записями (постами), страницами и другими типами записей из таблицы wp_posts
. Это гибкий механизм, позволяющий расширять стандартный набор полей записей без изменения структуры основной таблицы.
Поля
Поле | Тип данных | Описание |
---|---|---|
meta_id |
bigint(20) unsigned |
Уникальный идентификатор записи в таблице метаданных (первичный ключ с автоинкрементом). |
post_id |
bigint(20) unsigned |
Внешний ключ, который связывает метаданные с конкретной записью. Ссылается на поле ID в таблице wp_posts .
|
meta_key |
varchar(255) |
Ключ (название) метаполя. Например, _wp_page_template , _thumbnail_id или произвольное имя, заданное плагином или темой.
|
meta_value |
longtext |
Значение, связанное с указанным ключом meta_key . Может хранить строки, числа, сериализованные массивы или объекты.
|
Как это работает
Ядро WordPress, темы и плагины активно используют эту таблицу для хранения самой разнообразной информации. Например, здесь хранятся: ID featured-изображения (_thumbnail_id
), выбранный шаблон страницы (_wp_page_template
), произвольные поля (ACF, Custom Field Suite), настройки SEO (от плагинов Yoast SEO, Rank Math), количество просмотров записи и многое другое.
Для работы с метаданными записей WordPress предоставляет набор функций: add_post_meta()
, get_post_meta()
, update_post_meta()
и delete_post_meta()
. Эти функции обеспечивают правильное взаимодействие с таблицей, кэширование данных и безопасность.
Одной записи из wp_posts
может соответствовать несколько записей в wp_postmeta
с разными meta_key
. Это позволяет attached-ить к одной записи неограниченное количество дополнительных атрибутов.
Важным моментом является префикс подчеркивания _
в начале названия метаполя (например, _edit_last
). Такие поля считаются служебными и по умолчанию не отображаются в интерфейсе настройки произвольных полей в редакторе записи.
Пример SQL-запроса
Получить все метаполя для конкретной записи можно следующим запросом:
SELECT meta_key, meta_value
FROM wp_postmeta
WHERE post_id = 123
ORDER BY meta_id;
Найти все записи, у которых установлено определенное метаполе:
SELECT p.ID, p.post_title, pm.meta_value
FROM wp_posts p
INNER JOIN wp_postmeta pm ON (p.ID = pm.post_id)
WHERE pm.meta_key = 'my_custom_field'
AND p.post_status = 'publish';
Смотрите также
-
таблицу
wp_posts
,
которая хранит основные данные записей -
таблицу
wp_usermeta
,
которая хранит метаданные пользователей -
таблицу
wp_options
,
которая хранит настройки сайта