Данная статья является переводом первой статьи Rachel McCollin из цикла о данных в WordPress. В ней по полочкам разложена структура данных, типы контента и их взаимосвязь в WordPress. Будет полезна в первую очередь новичкам, но и профессионалы могут найти для себя что-либо новое.
- Post — запись,
- Page — страница,
- Attachment — вложение,
- Revision — редакция,
- Comment — комментарий,
- Taxonomy — таксономия,
- Category — категория
- Tag — метка,
- Term — термин (конкретное значение пользовательской таксономии)
- User — пользователь
- Metadata — метаданные
Исключение составляет лишь термин content. В большинстве случаев используется не перевод «содержимое», а — «контент». Я считаю, данный перевод является более корректным по тексту.
В некоторых случаях в скобках приводится расшифровка на английском для однозначного понимания.
Замечания об ошибках и опечатках прошу сообщать в личку.
Сайт на WordPress состоит из трех основных элементов:
- Сама установка WordPress
- Содержимое каталога wp-content, которое включает темы, плагины и загрузками
- База данных, где храниться контент в виде данных.
Большинство пользователей WordPress никогда не работают с базой данных напрямую. Они могут быть даже не в курсе, что она постоянно работает, чтобы обеспечить работу их сайт. Когда WordPress показывает любую страницу, то он соединяется к базой данных, чтобы показать контент, который добавили авторы на сайт.
В этой серии статей будет детально рассмотрены аспекты базы данных WordPress. Эта серия состоит из девяти частей:
- Вступление (сейчас вы читаете именно его)
- Взаимосвязи между данными
- Типы контента
- Пользовательские данные
- Метаданные
- Таксономии, категории, метки и термины
- Таксономии VS метаданные
- Таблица опций
- Данные WordPress Multisite
В этом статье рассматриваются таблицы базы данных и как они относятся с типами контента. Данные типы контента используются для работы в WordPress и определяют что, как и где должно храниться.
Типы контента в WordPress
Прежде чем разбирать данные хранящиеся в базе WordPress, рассмотрим типы контента. Существуют такие стандартные типы контента:
- Записи (posts)
- Страницы (pages)
- Пользовательские типы записей (custom post types)
- Вложения (attachments)
- Ссылки (links)
- Элементы меню (navigation menu items)
Эти типы контента имеют такие данные:
- Категории (categories)
- Метки (tags)
- Пользовательские таксономии (custom taxonomies and terms)
- Метаданные (post metadata)
Кроме того существует типы контента, хранящиеся в ином виде:
- Виджеты (widgets)
- Опции (options)
- Пользователи (users)
- Сайты для MU WordPress
- Нестандартный контент (hardcoded content), который добавляют некоторые темы/плагины.
- Сторонний контент (third party content) (например RSS)
Все эти типы контента хранятся в таблицах базы данных или в файлах настроек тем/плагинов. Каждый тип может быть представлен как отдельной записью в таблице, так и её частью. Кроме, того они могут быть связаны с данными в других таблицах. Например, данные о записях связаны с данными о пользователях, так что WordPress знает, кто является автором, какой записи.
Структура базы данных WordPress
WordPress использует несколько взаимосвязанных таблиц. Между ними установлены связи один ко многим. Например, к одной странице может быть много комментариев. Приведенная ниже диаграмма взята из кодекса WordPress. На ней показаны таблицы и связи между ними:
Большинство таблиц связаны с одной или несколькими другими с помощью одного поля. Это поле будет уникальным идентификатором для каждой записи (пример post_id). Более подробно для каждой таблицы:
Таблица | Данные | Связи с другими таблицами |
---|---|---|
wp_posts | Записи, страницы, вложения, редакции, пользовательские записи | wp_postmeta через post_id wp_term_relationships через post_id |
wp_postmeta | Метаданные записей, страниц и т.д. | wp_posts через post_id |
wp_comments | Комментарии | wp_posts через post_id |
wp_commentmeta | Метаданные комментариев | wp_comments через comment_id |
wp_term_relationships | Связи между таксономиями и записями, страницами и т.д. | wp_posts через post_id wp_term_taxonomy через term_taxonomy_id |
wp_term_taxonomy | Таксономии (включая категории и метки) | wp_term_relationships через term_taxonomy_id |
wp_terms | Ваши категории, метки и термины пользовательских таксономий | wp_term_taxonomy через term_id |
wp_links | Ссылки в вашем блоке (как правило, сейчас не используется) | wp_term_relationships через link_id |
wp_users | Пользователи | wp_posts через post_author |
wp_user_meta | Метаданные для каждого пользователя | wp_users через user_id |
wp_options | Опции и настройки сайта (устанавливаются в админке на странице настроек и в темах/плагинах) |
Отсутвуют |
Стоит отметить несколько вещей:
- Таблицы базы данных по умолчанию имеют префикс wp_. Вы можете его изменить (например, при установке).
- Таблица wp_posts является самой важно. Именно в ней храниться большинство данных.
- Только одна таблица не связанна с другими — таблица wp_options. В ней хранятся данные о сайте и настройках WordPress, которые не имеют отношения к записям или пользователям.
- Две таблицы используются для хранения данных о таксономии. Об это будет отдельная статья.
- В таблицах wp_users и wp_comments данные не связаны. В настройках WordPress можно указать, что только зарегистрированные пользователи могут оставить комментарий. Не смотря на это, WordPress не хранит связи о комментариях и пользователе, который их отправил.
- WordPress MU иметь некоторые дополнительные таблица. Их рассмотрение выходит за рамки данной статьи.
Связь контента и таблиц базы данных
Ознакомившись с типами контента в WordPress и таблиц базы данных, используемых для их хранения, можно провести между ними соотвествие. В приведенном ниже перечне показано, какие таблицы базы данных используется для хранения какого типа контента.
Тип контента | Таблица |
---|---|
Записи (posts) | wp_posts |
Страницы (pages) | wp_posts |
Пользовательские типы записей (custom post types) | wp_posts |
Вложения (attachments) | wp_posts |
Ссылки (links) | wp_links |
Элементы меню (navigation menu items) | wp_posts |
Категории (categories) | wp_terms |
Метки (tags) | wp_terms |
Пользовательские таксономии (custom taxonomies) | wp_term_taxonomy |
Термины пользовательских таксономий (custom terms) | wp_terms |
Метаданные (post metadata) | wp_post_meta |
Виджеты (widgets) | wp_options |
Опции (options) | wp_options |
Пользователи (users) | wp_users |
Нестандартный контент (hardcoded content) | wp_posts (если добавлен к записям) wp_options (если добавлен к виджетам) Файлы тем/плагинов |
Стороний контент (third party content) | wp_posts (если добавлен к записям) wp_options (если добавлен к виджетам) Файлы тем/плагинов |
Легко заметить, что не все таблицы используются в перечне. Так происходит потому, что некоторые из них используются для хранения метаданных. Другие используются для хранения связей. Оба варианта будут рассмотрены в последующих статьях.
Заключение
Надеюсь, что теперь вы лучшее понимаете, как и где WordPress хранит различные типы данных, как использует базу данных. Более подробно элементы этого процесса будут рассмотрены в последующих статьях. Так в следующей статье будут рассмотрены взаимосвязи между данными. А так же мы остановимся более подробно на том, как конкретные таблицы связаны и как некоторые из них используются исключительно для хранения данных об взаимосвязях.
Автор: galk_in