Структура базы данных WordPress

Post image of Структура базы данных WordPress

Написать эту статью меня подвигло письмо одного из моих читателей.

Начнем с азов: WordPress, как и большинство современных систем управления контентом, использует базу данных MySQL. Вся информация хранится в ней – настройки блога, записи, комментарии, ссылки, информация о пользователях и т.д.

Для управления или изменения базы данных используется программа PHP_My_Admin, которая есть в наличии на любом сервере.

Хочется также отметить, что некоторые плагины также создают свои таблицы в базе данных и не всегда при удалении плагина эти таблицы уничтожаются.

Еще один совет новичкам: не забывайте делать бэкап базы данных, иначе вы рискуете потерять свой блог. Не обязательно это делать вручную — есть неплохой плагин wp-db-backup, который по составленному вами расписанию пришлет бэкап БД вам на почту.

Итак, данные блога WordPress  (2.8.x) хранятся в десяти таблицах. БД WordPress 2.9.x по дефолту содержит уже 11 таблиц (+ wp_commentmeta).

Имя таблицы Описание
posts Основная таблица в базе. Здесь хранятся все статьи (заголовок, содержимое) и их служебная информация (дата создания, автор, тип и т.д.).
postmeta Дополнительные данные к статье, которые не попадают в стандартные поля таблицы posts.
users Данные о пользователях: как об авторах статей, так и о пользователях с возможностью их комментирования
usermeta Дополнительные поля для описания пользователей, дополнение к таблице users.
comments Здесь хранятся все комментарии для всех статей.
terms Простой список рубрик, к которым статья может относиться. Немного служебной информации о рубриках.
term_taxonomy В этой таблице рубрики систематизируются, то есть она служит для создания дерева рубрик.
term_relationships Здесь задаётся соответствие статьи и рубрики (вернее, элементу дерева рубрик из таблицы term_taxonomy), к которой статья относится.
links Ссылки и вся по ним информация.
options Общие настройки движка WordPress.

Остановимся на каждой из таблиц подробнее.

posts

Все страницы, аттачменты, записи хранятся в таблице wp_posts. Точнее, аттачменты хранятся в файловом виде на диске, но мета информация хранится в wp_posts.

Записи, страницы и аттачменты могут быть похожи друг на друга, но все имеют уникальный ID, который создается автоматически.


Поле Описание
ID Идентификатор записи, он же первичный ключ. Значения – от 1 до 263-1. Максимальное значение ячейки записывается 20-разрядным числом.
post_author Автор статьи, который задаётся идентификатором ID таблицы users.
post_date Дата публикации, время – местное.
post_date_gmt Дата публикации, время – по гринвичу.
post_content Содержимое статьи. При сохранении и выводе на страницу это содержимое проходит через вордпрессовский фильтр замен, именно поэтому часто на экране можно увидеть совсем не то, что мы вводили.
post_title Заголовок статьи или имя для изображения в библиотеке медиафайлов (да-да, изображения, вернее ссылки на них, тоже хранятся в этой таблице). Интересно, хоть кто-то придумал заголовок максимальной длины, в 65535 символов?
post_category Всегда равен 0.
post_excerpt Краткая выдержка, информация о записи (цитата). Надо вводить самостоятельно, по умолчанию отсутствует.
post_status Статус записи. Лично я встретил такие: publish – опубликованная, draft – черновик, inherit – связанная (например, изображение или резервная копия записи).
comment_status Включена ли возможность комментирования. open – можно комментировать, closed – нельзя.
ping_status Разрешены ли обратные ссылки и уведомления. Значения – open и closed
post_password Пароль в явном виде, если статья запаролирована. В противном случае – нет значения.
post_name Имя страницы для статичной ссылки. Записи автосохранения и изменения задают это имя автоматом.
to_ping
pinged
post_modified Дата последнего изменения.
post_modified_gmt То же самое – по гринвичу.
post_content_filtered
post_parent Для резервных копий и изображений – ID родительской записи.
guid Полная интернет-ссылка на запись (объект). Здесь вордпресс проявляет всю свою фантазию. На «статические» страницы даёт php-запрос типа ...?page_id=N, на автосейвы – с датой в URL-е, и т.д.
menu_order Равен 0.
post_type Тип записи: post – обычная запись, page – запись с постоянной ссылкой (статичная), revision – автосохранение, attachment – медиафайл (например, изображение).
post_mime_type Якобы тип содержимого записи. Важен и нужен только для прикреплений (например, png-изображение проходит как image/png).
comment_count Количество комментов к записи.

postmeta

Много вещей, которые Вы хотите проассоциировать со своим постом: название фильма, местоположение, информацию для поисковиков, и т.д. хранятся в таблице wp_postmeta.


Поле Описание
meta_id Первичный ключ.
post_id К какой записи таблицы posts относятся наши метаданные.
meta_key Имя дополнительного параметра. Часто используется для прикреплений файлов и других метаданных к статье.
meta_value Значение дополнительного параметра. Содержимое зависит от имени параметра.

WordPress сохраняет в эту таблицу дополнительные данные об аттачментах, которые не могут быть сохранены в wp_posts. Таблица используется движком довольно часто — будьте внимательны и осторожны при внесении изменений!

users

WordPress использует эту таблицу для хранения информации о зарегистрированных пользователях. В ней содержатся ID пользователей, их логин, зашифрованный пароль, полное имя, дата регистрации, и многое другое.


Поле Описание
ID Идентификатор, первичный ключ.
user_login Имя пользователя для входа.
user_pass Пароль пользователя для входа, в зашифрованном виде.
user_nicename Как обращаться к пользователю. Как правило, совпадает с именем для входа.
user_email Электропочта для связи.
user_url Адрес сайта пользователя. Именно благодаря этому очень нужному полю, блоги на вордпрессе с настройками по умолчанию потихоньку обрастают спамом.
user_registered Дата регистрации пользователя.
user_activation_key Активационный ключ, рандомный. После активации удаляется.
user_status
display_name Имя для отображения.

usermeta

Для пользователей таблица wp_usermeta является тем же самым, чем является wp_postmeta для записей (контента). В ней содержится вся дополнительная информация о пользователях — персональные настройки (вкл./выкл. визуальный редактор, день рождения, контактная информация и т.п.).


Поле Описание
umeta_id Идентификатор метазаписи, первичный ключ.
user_id Идентификатор пользователя, к которому имеет отношение запись.
meta_key Дополнительный параметр. Вот здесь – внимание! Дополнительными параметрами считаются: nickname – как пользователь отображается в системе, first_name – реальное имя пользователя, description – описание. И многое другое, что можно было бы использовать в таблице users.
meta_value Значение дополнительного параметра.

comments

В таблице wp_comments хранятся все комментарии к записям на вашем сайте, включая подтвержденные, ожидающие модерации, спам, трэкбэки, пингбэки, посланные Вам с других сайтов.


Поле Описание
comment_ID Идентификатор комментария, первичный ключ.
comment_post_ID Идентификатор заметки, к которой относится комментарий.
comment_author Автор, берётся из регистрационных данных или вводится вручную, если регистрация для комментариев не требуется.
comment_author_email Электропочта.
comment_author_url Сайт автора комментария.
comment_author_IP IP-адрес прокомментировавшего.
comment_date Дата и время.
comment_date_gmt Дата и время – по гринвичу.
comment_content Сам комментарий.
comment_karma
comment_approved Одобрен ли комментарий для показа.
comment_agent С какого браузера и системы заходили.
comment_type
comment_parent Родительский коммент. Нужен для древовидной структуры.
user_id Идентификатор зарегистрированного пользователя.

commentmeta

Используется начиная с версии 2.9. Содержит дополнительные параметры для комментариев. Автоматическое обновление с 2.8.6 до 2.9.х иногда может привести к ошибке, связанной с этой таблицей.

terms

Описание рубрик.


Поле Описание
term_id Идентификатор.
name Название рубрики. Название используется для определения рубрики практически везде, например, под записью или в виджете рубрик.
slug Ярлык рубрики. «Ярлык» — это вариант названия, подходящий для URL. Обычно содержит только латинские буквы в нижнем регистре, цифры и дефисы.
term_group

term_taxonomy

Таблица для объединения рубрик в деревья и для описания взаимосвязей рубрик.


Поле Описание
term_taxonomy_id Идентификатор, первичный ключ.
term_id Идентификатор рубрики.
taxonomy category – рубрика, link_category – рубрика ссылок.
description Краткое описание.
parent Идентификатор родительской рубрики.
count Количество ассоциированных записей.

term_relationships

Таблица для связи статьи с рубриками.


Поле Описание
object_id Какой объект описываем.
term_taxonomy_id С какой связью рубрик ассоциируем.
term_order

links

Обычно таблица wp_links используется для хранения блогролла, списка ссылок на другие сайты или блоги. Настроек для блогролла огромное количество, поэтому подробно рассматривать эту таблицу мы не будем.

options

Общие настройки движка WordPress.

Данные в этой таблице не связаны с данными из других таблиц и служат для настройки блога в целом. Описывать столбцы подробно нет смысла — их в таблице около 150-и.

В заключение, хотелось бы поблагодарить авторов сайтов, чья информация была использована в этой статье:

Злобного Админа; блог Press WordPress; блог WordPress Thems&Plugins, блог WP-Info.

Информация из Codex на английском.

Опубликовано   7 февраля 2010   в категории Строим сайт
Метки : ,
Понравился пост? Не хотите пропустить продолжение? Подпишитесь на RSS!
Kotelloblog - блог интернетоголика
Или подпишитесь на обновления по e-mail:

В мемориз, однозначно!

Google Яндекс закладки I.ua Моё место Memori.ru Бобрдобр
Комментарии
Фев 9, 2010
10:50
#1 Александр (2 комментария) :

Блестящая статья! Перерыл тонны сайтов, а такого толкового и профессионально поданного материала нигде не нашел! Для меня это оказалось чрезвычайно актуально, поскольку нарабатываю блог на локальном сервере. Отсюда приходится делать его на работе и дома. Все время мучился с переносом данных. А ведь для этого надо было знать где, что и как храниться! И тут неожиданно забрел на блог Николая! Это действительно — удача, очень помогла эта информация. Всем рекомендую!

Фев 9, 2010
12:00
#2 k0tello :

Александр, спасибо! Такие комментарии вдохновляют =) Хотя я, конечно, в первую очередь поблагодарил бы Злобного Админа, который вручную лопатил эти таблицы.

Кстати- хочу повторить его подвиг =) Как думаете — подробный обзор таблицы wp_option будет интересен?

Фев 26, 2010
17:59
#3 Александр (2 комментария) :

За бедного гусара замолвлю слово... Считаю что подробный обзор таблицы wp_option будет интересен только профессионалам! Нам гусарам (новичкам), желающим внести посильный вклад в виртуальный мозг планеты желательно как младенцам — пищу, разжеваннную другими. Ведь у нас еще нет зубов! К тому же многие из нас (70%) визуалы. Нам лучше 1 раз увидеть (видеоурок). Просим учесть наши пожелания. Успехов вам и вашему прекрасному информационному порталу!

Мар 4, 2010
14:54
#4 Speculum :

Спасибо за статью. Полезно

Апр 28, 2010
11:12
#5 Sergio (2 комментария) :

спасибо что расписали по пунктам зачем оно и с чем его едят :)

мая 7, 2010
12:43
#6 Дмитрий(1 комментарий) :

Отличный обзор! Спасибо за подробное описание темы БД Вордпресс!

мая 18, 2010
0:40
#7 ФильмоКритик(1 комментарий) :

Спасибо за обзор.

Хотелось бы увидеть обзор таблицы для нового WordPress 3.0, благо там есть какие-то изменения (ставил бету).

А вообще, думаю, многим пригодилась бы графическая табличка с указанием связей между таблицами ;)

Комментирование закрыто.

Предыдущая запись
«
Следующая запись
»

Последние твитыСледуй за мной

  • Твиты загружаются...
Проверка тиц pr
Карта Блоггеров
Каталог блогов

Powered by WordPress | Особая благодарность Sergeshk за руссификацию темы