ВНИМАНИЕ: Запись на курсы по HTML, CSS, JavaScript, PHP, Python, React, Vue, Laravel и другим фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
1 of 21 menu
Новый формат обучения! Репетиторство по программированию. Есть еще 3 свободных места! Жми для подробностей.

Таблица 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:

Пример 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,
    которая хранит комментарии к записям