ВНИМАНИЕ: Запись на курсы по HTML, CSS, JavaScript, PHP, Python, React, Vue, Laravel и другим фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
2 of 21 menu
Хочешь читать code.mu на своем родном языке? Помоги с переводом! Переведем мы сами, тебе нужно указать на ошибки перевода:) Оставляй заявку ->

Таблица 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,
    которая хранит настройки сайта