Веб-сайт WordPress состоит из трех основных элементов:
- Сама установка WordPress
- Содержимое каталога
wp-content
которое включает в себя темы, плагины и загружаемые файлы. - База данных, где хранится весь контент.
Большинство пользователей WordPress никогда не вступают в прямой контакт с базой данных и могут даже не осознавать, что они постоянно работают над заполнением своего сайта. Когда WordPress обслуживает какую-либо страницу, будь то домашняя страница, отдельный пост или страница или архив, он обращается к базе данных, чтобы вызвать контент, который редакторы и администраторы добавили на сайт.
В этой серии уроков я подробно рассмотрю различные аспекты базы данных WordPress. Серия будет состоять из девяти частей, охватывающих следующее:
- Вступление
- Отношения между данными
- Типы контента
- Данные пользователя
- Метаданные
- Таксономии, категории, теги и термины
- Таксономии и метаданные поста
- Таблица опций
- WordPress Multisite data
В этом введении я дам обзор таблиц базы данных и того, как они соотносятся с типами контента, с которыми вы можете работать в WordPress, и определите, что и где хранится.
Типы контента в WordPress
Поскольку таблицы базы данных используются для хранения контента, прежде чем вы сможете понять их, вам необходимо понять контент. В WordPress есть несколько типов контента:
- сообщений
- страницы
- пользовательские типы сообщений
- вложения
- связи
- пункты меню навигации (которые хранятся как отдельные сообщения)
Затем к этим типам контента прикрепляются данные:
- категории
- теги
- таможенные таксономии и условия
- публиковать метаданные
В дополнение к этому есть другие типы контента, которые хранятся по-разному:
- виджеты
- параметры
- пользователи
- сайты (для многосайтовой установки)
- жестко закодированный контент (добавленный в вашу тему или плагины)
- контент, получаемый из других источников (контент сторонних производителей, доступ к которому осуществляется через каналы, потоковую передачу или другие методы)
Все эти типы контента хранятся где-то в базе данных (или иногда в темах или файлах плагинов, как я покажу). У них может быть собственная запись, или они могут быть частью другой записи (например, потоковый контент, закодированный в записи). Они также могут быть связаны с данными в других таблицах. Например, данные о публикациях будут связаны с данными о пользователях, чтобы WordPress знал, кто и какие авторы написал.
Структура базы данных 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 и таблицы базы данных, используемые для их хранения, может быть полезно сопоставить их. В таблице ниже показано, какая таблица базы данных используется для хранения каждого типа контента.
Тип содержимого | Таблица (ы) |
---|---|
сообщений | wp_posts |
страницы | wp_posts |
пользовательские типы сообщений | wp_posts |
вложения | wp_posts |
связи | wp_links |
пункты меню навигации | wp_posts |
категории | wp_terms |
теги | wp_terms |
таможенные таксономии | wp_term_taxonomy |
условия таксономии | wp_terms |
публиковать метаданные | wp_post_meta |
виджеты | wp_options |
параметры | wp_options |
пользователи | wp_users |
жестко закодированный контент | wp_posts (если добавлено в сообщения) wp_options (если добавлено в виджеты) Файлы тем и плагинов (если жестко заданы) |
сторонний контент | wp_posts (если добавлено в сообщения) wp_options (если добавлено через виджеты или плагины) Файлы тем и плагинов (если жестко заданы) |
Возможно, вы заметили, что не все таблицы базы данных включены в эту таблицу. Это связано с тем, что некоторые из них используются для хранения метаданных, а другие — для хранения отношений, которые будут рассмотрены более подробно далее в этой серии.
Резюме
Надеюсь, теперь вы лучше понимаете, как и где WordPress хранит различные типы данных, используя структуру базы данных. Эта серия рассмотрит все аспекты этого более подробно.
В следующей части я рассмотрю взаимосвязи между данными и более подробно расскажу о том, как связаны конкретные таблицы и как некоторые из них используются исключительно для хранения данных об отношениях.