Работа с данными в WordPress. Часть 1: Введение
Веб-сайт WordPress состоит из трех основных элементов:
- Сборка WordPress
- Контент в папке wp-content, который включает в себя темы, плагины и загрузки
- База данных, где хранится весь контент.
Большинство пользователей WordPress никогда не работают напрямую с базой данных, и порой даже не знают, что она постоянно используется при заполнении сайта. Когда WordPress обслуживает любой тип страниц, будь то домашняя страница, отдельная запись, страница или архив, он запрашивает базу данных для передачи контента, который редакторы и администраторы добавляют на сайт.
В данной серии статей я рассмотрю в деталях аспекты работы с базой данных в WordPress. Серия будет состоять из 9 частей:
- Введение
- Отношения между данными
- Типы контента
- Пользовательские данные
- Метаданные
- Таксономии, рубрики, метки и термы
- Таксономии против метаданных записей
- Таблица опций
- Данные мультисайтов в WordPress
В данном введении я рассмотрю таблицы базы данных, покажу, как они связаны с типами контента (с которыми вы, возможно, уже привыкли работать в 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 хранит разные типы данных, используя структуру БД. Эта серия раскроет все аспекты более детально.
В следующей части я изучу отношения между данными, а также посмотрю более пристально на то, как связаны между собой определенные таблицы, а также какие таблицы используются только для хранения данных об отношениях.
Источник: code.tutsplus.com
А как перейти на 2 ю часть?