Работа с данными в WordPress. Часть 1: Введение

Веб-сайт WordPress состоит из трех основных элементов:

  1. Сборка WordPress
  2. Контент в папке wp-content, который включает в себя темы, плагины и загрузки
  3. База данных, где хранится весь контент.

Большинство пользователей WordPress никогда не работают напрямую с базой данных, и порой даже не знают, что она постоянно используется при заполнении сайта. Когда WordPress обслуживает любой тип страниц, будь то домашняя страница, отдельная запись, страница или архив, он запрашивает базу данных для передачи контента, который редакторы и администраторы добавляют на сайт.

В данной серии статей я рассмотрю в деталях аспекты работы с базой данных в WordPress. Серия будет состоять из 9 частей:

  1. Введение
  2. Отношения между данными
  3. Типы контента
  4. Пользовательские данные
  5. Метаданные
  6. Таксономии, рубрики, метки и термы
  7. Таксономии против метаданных записей
  8. Таблица опций
  9. Данные мультисайтов в WordPress

В данном введении я рассмотрю таблицы базы данных, покажу, как они связаны с типами контента (с которыми вы, возможно, уже привыкли работать в WordPress), а также опишу, где что хранится.

Типы контента в WordPress

Поскольку таблицы базы данных используются для сохранения контента, то перед тем, как перейти к их изучению, вы должны понять, что вообще подразумевается под контентом. В WordPress существует много разных типов контента:

  • Записи
  • Страницы
  • Произвольные типы записей
  • Прикрепления
  • Ссылки
  • Пункты навигационного меню (которые обычно сохраняются как отдельные записи)

Следующие типы контента обычно связаны со своими данными:

  • Рубрики
  • Метки
  • Произвольные таксономии и термы
  • Метеданные записей

В дополнение к этому, есть также и другие типы контента, которые сохраняются несколько иначе:

  • Виджеты
  • Опции
  • Пользователи
  • Сайты (для мультисайтовой сборки)
  • Контент, прописанный в коде (добавленный к вашим темам или плагинам)
  • Контент, полученный из какого-либо источника (сторонний контент, полученный через фиды, стриминг или иные техники)

Все эти типы контента хранятся где-то в базе данных (или иногда в файлах темы или плагинов, о чем я скажу ниже). Они могут иметь свою собственную запись в БД или выступать частью другой записи (как в случае с потоковым контентом, кодированным в пост). Они могут также связываться с данными в других таблицах. К примеру, данные о постах могут быть связаны с данными о пользователях, чтобы WordPress мог знать, кто является автором тех или иных постов.

Структура БД в WordPress

WordPress использует несколько таблиц базы данных с отношениями между ними, что позволяет минимизировать объем данных, нуждающихся в сохранении – т.е. создаются отношения «один-ко-многим». Это означает, что, допустим, у одного пользователя может быть много записей, связанных с его аккаунтом. Это сделано с целью экономии – если бы WordPress хранил бы все пользовательские данные для каждого пользователя вместе с каждым постом, который он создал, то это привело бы к появлению дублируемых данных и неоправданному «поеданию» свободного пространства.

Схема, представленная ниже, взята из кодекса WordPress и показывает то, как именно связаны между собой таблицы базы данных:

working-with-data-in-wordpress-introduction-database-tables

Большинство таблиц связаны с одной или более других таблиц посредством одного поля. Это поле будет уникальным идентификатором для каждой записи в таблице, как, к примеру, 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

Блог про WordPress
Комментарии: 2
  1. Egor

    Написать книгу по проеэктированию на WP в планах нет? )))

  2. Илья Якушин

    Можно ли создать новый файл в корне сайта и из него работать с базой wordpress?

Добавить комментарий

Получать новые комментарии по электронной почте.