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

Дата публикации:Июль 30, 2014

Веб-сайт 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

Поделиться

2 комментария

  1. Egor says:

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

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

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.