Таблица wp_posts
Таблица wp_posts
- это ядро системы управления контентом WordPress. Практически всё, что отображается на сайте, так или иначе связано с этой таблицей. Каждая запись в ней представляет собой единицу контента с определённым типом (post_type
) и статусом (post_status
).
Поля
Поле | Тип данных | Описание |
---|---|---|
ID |
bigint(20) unsigned |
Уникальный числовой идентификатор записи (post ). Автоинкрементное поле, является первичным ключом таблицы.
|
post_author |
bigint(20) unsigned |
ID пользователя, создавшего запись. Внешний ключ, связывающий запись с таблицей wp_users .
|
post_date |
datetime |
Дата и время создания записи в часовом поясе сайта. |
post_date_gmt |
datetime |
Дата и время создания записи по Гринвичу (GMT). |
post_content |
longtext |
Основное содержимое записи (контент). Для записей и страниц здесь хранится текст, HTML-разметка, шорткоды. Для вложений это поле часто пустое. |
post_title |
text |
Заголовок записи. |
post_excerpt |
text |
Краткое описание (цитата) записи. Используется как анонс в архивах, RSS-ленте и при поиске. |
post_status |
varchar(20) |
Статус записи. Определяет её видимость и доступность. Основные статусы: publish (опубликовано), draft (черновик), pending (на утверждении), private (приватная), trash (в корзине), inherit (для ревизий и вложений).
|
comment_status |
varchar(20) |
Статус комментариев: open (комментирование разрешено) или closed (закрыто).
|
ping_status |
varchar(20) |
Статус пингов и уведомлений: open (разрешено) или closed (запрещено). Определяет, может ли запись принимать пингики и трекбэки.
|
post_name |
varchar(200) |
"Слаг" (slug) записи - её адресная часть в URL. Обычно генерируется автоматически из заголовка, но может быть задан вручную. Должен быть уникальным. |
post_modified |
datetime |
Дата и время последнего изменения записи в часовом поясе сайта. |
post_modified_gmt |
datetime |
Дата и время последнего изменения записи по Гринвичу (GMT). |
post_parent |
bigint(20) unsigned |
ID родительской записи. Используется для создания иерархической структуры. Например, для страниц это поле указывает на родительскую страницу, а для вложений (медиафайлов) - на запись, к которой этот файл прикреплён. |
guid |
varchar(255) |
Глобально уникальный идентификатор (Globally Unique Identifier). Для записей и страниц обычно содержит полный URL до постоянной ссылки на момент создания. Для медиафайлов - полный URL до файла. Не рекомендуется использовать для построения ссылок, так как значение может меняться при переносе сайта. |
menu_order |
int(11) |
Порядок записи в списке. В основном используется для сортировки страниц и элементов меню. |
post_type |
varchar(20) |
Тип записи. Определяет, чем является объект. Основные типы: post (запись), page (страница), attachment (вложение/медиафайл), revision (ревизия), nav_menu_item (элемент меню). Плагины и темы могут регистрировать свои собственные типы записей (Custom Post Types).
|
post_mime_type |
varchar(100) |
MIME-тип для вложений. Для записей и страниц это поле пустое. Для медиафайлов содержит их тип, например: image/jpeg , application/pdf .
|
comment_count |
bigint(20) |
Общее количество комментариев, оставленных к данной записи. Значение кэшируется здесь для производительности. |
Как это работает
Когда вы создаёте новую запись, страницу или загружаете медиафайл, WordPress создаёт новую строку в таблице wp_posts
. Поле post_type
определяет, как система должна обрабатывать этот объект. Записи типа post
обычно выводятся в блоге в обратном хронологическом порядке, страницы (page
) образуют статическую иерархическую структуру, а вложения (attachment
) привязываются к другим записям через поле post_parent
.
При каждом изменении записи WordPress может создавать её ревизию (post_type = 'revision'
), которая сохраняет предыдущее состояние контента. Это позволяет откатить изменения, если это потребуется.
Поля post_date
и post_date_gmt
критически важны для корректного отображения записей в ленте, RSS-каналах и для функций, зависящих от времени. Поле post_name
(слаг) формирует ЧПУ (человеко-понятные урлы) для постоянных ссылок.
Связь с другими таблицами осуществляется через ID:
post_author
→wp_users.ID
ID
→wp_postmeta.post_id
(дополнительные мета-поля)ID
→wp_term_relationships.object_id
(связь с рубриками и метками)ID
→wp_comments.comment_post_ID
(комментарии)
Пример SQL-запроса
Выбрать 10 последних опубликованных записей блога с именем автора:
SELECT p.*, u.user_login, u.display_name
FROM wp_posts p
LEFT JOIN wp_users u ON (p.post_author = u.ID)
WHERE p.post_type = 'post'
AND p.post_status = 'publish'
ORDER BY p.post_date DESC
LIMIT 10;
Найти все вложения (изображения), прикреплённые к конкретной записи:
SELECT *
FROM wp_posts
WHERE post_type = 'attachment'
AND post_parent = 157
ORDER BY menu_order ASC;
Смотрите также
-
таблицу
wp_postmeta
,
которая хранит произвольные дополнительные данные (метаполя) для записей -
таблицу
wp_term_relationships
,
которая связывает записи с рубриками и метками -
таблицу
wp_users
,
которая хранит данные пользователей-авторов -
таблицу
wp_comments
,
которая хранит комментарии к записям