Работа с данными в WordPress
WordPress сайт состоит из трех основных элементов:
- Собственно установленный WordPress;
- Содержимое папки wp-content, которое включает в себя темы, плагины и загружаемые материалы;
- База данных, в которой хранится весь контент.
Большинство пользователей WordPress никогда не имеют дела непосредственно с базой данных, и могут даже быть не в курсе, что она постоянно задействуется при наполнении их сайта.
Когда WordPress обслуживает любую страницу, будь-то домашняя страница, одиночная запись, страница, или архив, система осуществляет доступ к базе данных, чтобы сохранить контент, который редакторы и администраторы добавили на сайт.
В этой серии статей я подробно рассмотрю различные аспекты работы базой данных WordPress. Серия будет включать в себя девять частей, охватывающих следующие темы:
- Введение.
- Связь между данными.
- Типы контента.
- Данные пользователей.
- Метаданные.
- Таксономии, категории, теги и термины.
- Таксономии метаданных записей.
- Таблицы опций.
- Данные групповой установки сайтов WordPress.
В этом вступлении я приведу обзор таблиц базы данных и того, как они связаны с типами контента, который вы можете использовать при работе с WordPress. А также того, как определить, что где хранится.
Типы контента в WordPress
Так как таблицы базы данных используются для хранения контента, прежде чем вы сможете разобраться с таблицами, необходимо разобраться с контентом. В WordPress существует несколько типов контента:
- записи;
- страницы;
- записи пользовательского типа;
- вложения;
- ссылки;
- пункты меню навигации (которые хранятся в виде отдельных записей).
Этим типам контента затем назначаются следующие данные:
- категории;
- теги;
- пользовательские таксономии и термины;
- метаданные записей.
Существует еще ряд дополнительных типов контента:
- виджеты;
- опции;
- пользователи;
- сайты (для групповой установки сайтов);
- жестко забитый в код контент (добавляется в тему или плагин);
- контент, полученный извне (контент третьей стороны, полученный через каналы, стриминг или другими способами).
Все эти типы контента хранятся в разных местах базы данных (или в некоторых случаях в файлах тем или плагинов). Они могут содержаться в собственных записях или же могут являться частью другого элемента (например, потоковых данных, закодированных в записи).
Кроме того, они могут быть связаны с данными других таблиц. Например, данные о записях будут связаны с данными о пользователях, таким образом, WordPress знает, кто является автором любой записи.
Структура базы данных WordPress
WordPress использует ряд таблиц базы данных, связанных между собой, чтобы свести к минимуму объем данных, который должен быть сохранен - это создает связь один-для-всех. То есть, скажем, один пользователь может иметь много записей, автором которых он является – все они связаны с записью пользователя.
Это позволяет экономить ресурсы - если бы WordPress хранил все пользовательские данные для каждого пользователя для каждой его записи, это бы означало много повторяющихся данных и много занятого дискового пространства.
На приведенной ниже схеме, данные для которой взяты из Кодекса WordPress, показано, как связаны между собой различные таблицы базы:

Большинство таблиц связано с одной или несколькими другими таблицами через одно поле. Это поле будет уникальным идентификатором для каждой записи, например, post_id. Более подробно это показано в данной таблице:
Таблица | Хранимые данные | С чем связана |
wp_posts | Записи, страницы, вложения, ревизии и элементы меню навигации. | wp_postmeta (через post_id) wp_term_relationships(viapost_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 хранит различные типы данных, используя структуру базы данных. В этой серии статей мы подробно рассмотрим различные аспекты данной темы.
В следующей части я рассмотрю связь между данными, и остановлюсь более подробно на том, как конкретные таблицы связаны между собой, и как некоторые из них используются исключительно для хранения данных о связях.