, как и большинство других современных систем управления контентом, активно использует базу данных. Вся информация хранится в ней - настройки блога, записи, комментарии, ссылки, информация о пользователях и т.д. Поэтому необходимо понимать, как база организована, какие типы данных в ней хранятся, и как разные вещи взаимодействуют друг с другом.
Перед тем, как мы займёмся детальным изучением структуры базы, я хочу обратить Ваше внимание на три следующих момента:
1. WordPress API предоставляет некоторые возможности для управления данными без прямого обращения к базе. Поэтому, с технической стороны, Вам не нужно знать, как база данных организована. Но если Вы имеете об этом представление, возможно, Вы найдёте решения, которые будут более быстными и эффективными для достижения поставленной цели.
2. Структура базы данных WordPress проста и удобна. Бояться нечего. Она состоит всего из 10 таблиц с несколькими полями в каждой. После беглого ознакомления структура останется в Вашей памяти.
3. Структура базы данных WordPress .
wp_posts
WordPress используется в основном как система управления контентом (CMS). Поэтому, на мой взгляд, таблица с контентом имеет основное значение. Страницы, записи, аттачменты, все это - контент, всё это WordPress хранит в одной таблице - wp_posts.
В действительности аттачменты хранятся как есть - в виде файлов на диске, но WordPress использует таблицу wp_posts для хранения мета-информации об аттачментах (например ID пользователя, который его загрузил, ID записи, которая ссылается на аттачмент, время загрузки и т.п.).
Страницы, записи и аттачменты могут быть очень похожи друг на друга, а могут сильно отличаться. Сначала мы рассмотрим, что общего между ними. Все три вида контента имеют уникальный идентификатор - ID (обычно создаётся автоматически WordPress’ом или MySQL), автора (человек, который написал запись или загрузил файл), дату, название (заголовок), и описание (даже если это поле пустое, его можно будет заполнить позже). Все три вида имеют URL. Итак, для каждой записи, страницы или аттачмента имеется запись в таблице wp_posts.
Теперь поговорим о различиях между ними. Чтобы отличить один тип контента от другого, в таблице wp_posts существует поле post_type. Для записей его значение - ‘post’, для страниц - ‘page’, для аттачментов - ‘attachment’.
Сущещствует некоторое количество специальных полей. Например, поле post_mime_type используется для хранения типа файла аттачмента (‘image/jpeg’ и ‘application/pdf’). Поле menu_order содержит порядковый номер отображения страницы в списке. Поле post_parent используется для организации страниц с “подстраницами”, а так же для хранения информации о связи аттачмента с записью.
Для того, чтобы понять, как и когда используется то или иное поле, запустите следующие запросы (для каждого типа контента):
* SELECT * FROM wp_posts WHERE post_type = ‘post’ LIMIT 1
* SELECT * FROM wp_posts WHERE post_type = ‘page’ LIMIT 1
* SELECT * FROM wp_posts WHERE post_type = ‘attachment’ LIMIT 1
В этой же таблице находится информация о состоянии записи/страницы. В большинстве случаев Вы увидите ‘publish’ для опубликованных записей, ‘draft’ для черновиков, и ‘inherit’ для аттачментов. С остальными состояниями Вы без проблем разберетесь сами.
Вот несколько примеров того, как может быть использована таблица wp_posts:
* Получение статистики - сколько записей вы всего написали, сколько записей написал тот или иной автор, какое количество записей публикуется в среднем за день и т.д.
* Создать список всех аттачментов.
* Создать галерею картинок для каждой записи (hint: “WHERE post_type = ‘attachment’ AND (post_mime_type = ‘image/jpeg’ OR post_mime_type = ‘image/gif’ OR post_mime_type = ‘image/png’)“).
wp_postmeta
Существует миллион вещей, которые Вы, возможно, захотите проассоциировать со своей записью: Ваше настроение, название песни, которую Вы слушали, географическое местоположение, список ссылок на похожие записи, специфичную информацию для поисковых машин, и т.д. и т.п. Всё это хранится в таблице wp_postmeta.
Структура этой таблицы очень простая и гибкая. Она имеет всего четыре поля: meta_id, post_id, meta_key и meta_value. meta_id создаётся автоматически, и я не вижу ни одной причины, по которой его нужно было бы менять вручную. post_id соответствует ID записи (в таблице wp_posts), о которой эта мета-информация. meta_key - это краткое описание мета-информации, которую Вы хотите добавить к записи (например ‘mood’ или ’song’). meta_value - это непосредственно значение мета-информации (например “хуевастенько” для ‘mood’).
WordPress использует эту таблицу для хранения дополнительной информации об аттачментах, которая не может быть сохранена в таблице wp_posts (локальные пути к файлу, информация о превьюшках и т.д.). Также в этой таблице содержатся специфические поля или значения - те, которые вы видите в редакторе. И, конечно, существует огромное количество плагинов, которые используют эту таблицу для своих нужд. Итак, если Вы решили использовать эту таблицу, Вам нужно придумать уникальные имена для Ваших “мета-ключей”, в противном случае Ваш плагин может конфликтовать с другими.
wp_users
WordPress использует эту таблицу для хранения информации о зарегистрированных пользователях. В ней содержатся ID пользователей, их логин, зашифрованный пароль, полное имя, дата регистрации, и многое другое.
wp_usermeta
Для пользователей таблица wp_usermeta является тем же самым, чем является wp_postmeta для записей (контента). В ней содержится вся дополнительная информация о пользователях - персональные настройки (вкл./выкл. визуальный редактор, день рождения, контактная информация и т.п.).
wp_comments
В таблице wp_comments хранятся все комментарии к записям на вашем сайте, включая подтвержденные, ожидающие модерации, спам, трэкбэки, пингбэки, посланные Вам с других сайтов. О предназначении полей этой таблицы Вы можете догадаться и сами, но в любом случае, вот их краткое описание:
* comment_ID - уникальный ID для каждого комментария, создаётся автоматически MySQL
* comment_post_ID - уникальный ID записи, к которой комментарий был добавлен
* comment_author - имя автора комментария
* comment_author_email - email автора комментария
* comment_author_url - URL автора комментария
* comment_author_IP - IP-адрес автора комментария
* comment_date - дата и время добавления комментария
* comment_content - текст комментария
* comment_approved - прошёл ли комментарий модерацию и если да, то как
* comment_agent - браузер автора комментария (MSIE, Firefox, Safari и т.д.)
* comment_type - обычный комментария, трэкбэк, пингбэк
* user_id - ID автора, если он зарегистрированный пользователь
Есть еще несколько полей, но они нам вряд ли понадобятся, поэтому мы оставим их описание за кадром.
wp_options
Таблица wp_options содержит все глобальные настройки WordPress. Она довольно похожа на таблицы wp_postmeta и wp_usermeta по структуре, но есть и различия.
В этой таблице есть поле blog_id, но используется оно только в WordPress MU (большая часть кода однопользовательской и многопользовательской инсталляций WordPress совпадают). WordPress MU использует это поле для того, чтобы отличить настройки одного блога от настроек другого.
Поле autoload определяет - загружаются/записываются ли настройки из базы данных/кэша или они доступны только для чтения. Большинство настроек загружаются автоматически.
wp_categories
Таблица wp_categories содержит информацию обо всех категориях, которые Вы создали, это: название и описание категории, ID родительской категории и т.д.
Для ускорения работы WordPress сохраняет некоторую статистику. Например, количество записей и ссылок в категории пересчитывается каждый раз при их добавлении или удалении (поля category_counter и link_count).
wp_post2cat
Связывание записи с категорией осуществляется через таблицу wp_post2cat. Это стандартный подход для связи “многих-со-многими” в реляционных базах данных. wp_post2cat имеет только три поля: уникальный ID (для строки в таблице, создаётся автоматически), уникальный ID записи и ID категории, в которую добавлена запись.
wp_links
Обычно таблица wp_links используется для хранения блогролла, списка ссылок на другие сайты или блоги. Настроек для блогролла огромное количество, поэтому подробно рассматривать эту таблицу мы не будем. Скажу только одно: если Вам вдруг вздумается создать на основе WordPress каталог ссылок, например новый Yahoo!, Вам не придётся много программировать. По сути нужно только будет создать “кустомную” тему.
wp_link2cat
Таблица wp_link2cat практически идентична wp_post2cat, за исключением того, что в ней содержатся ID ссылок вместо ID записей.
Взято с
Мой блог находят по следующим фразам
- вывод цитаты JS
- загрузить контент в wordpress
- самые красивые сайты
- плагины для World of WarCraft
- плагины для World of WarCraft
- плагина к World of Warcraft
- Опять премиум тема, качаем на халяву
- Продолжаю раздачу премиум тем для Вашего блога
- Wordpress шаблон для онлайн журнала
- Раздача Free Premium Wordpress Themes продолжается, теперь Revolution
- Еще одна премиум тема бесплатно - Over Easy





Комментарии (7)
// мая 8, 2008 at 3:50 дп
Приятная статья, мне даже очень и очень понравилось!
Попробовал, помогло, спасибо! :)
// мая 9, 2008 at 3:29 дп
Не за что, сам пользуюсь.
// Июн 3, 2008 at 14:11 пп
Спасибо, хорошая статья, редко кто пишет понятно на эту тему. Кучу времени экономит, я как раз хочу использовать базу WordPress для собственной CMS. Сам WordPress хоть и удобный, но тормозной слишком и избыточный, вдобавок под SEO слишком много переделывать приходится.
// Ноя 29, 2008 at 3:56 дп
у меня вопросик. Если я использую 2 блога на одной базе данных и делаю бэкап базы через панель одного блога, то бэкап произойдет у обоих блогов или только у одного?
// Дек 5, 2008 at 11:12 дп
У вас информация застарелая, сейчас таких таблиц, как
wp_post2cat и wp_link2cat в вордпрессе нет
// Дек 5, 2008 at 11:32 дп
Этот пост был написан год назад, когда о версиях 2.5, 2.6 и 2.7 ещё и не слыхали.
// Дек 5, 2008 at 12:19 пп
Понятно, просто гугл ваш сайт дает в выдаче по поиску структура базы данных wordpressa.
Оставить комментарий