Статьи

Понимание и работа с данными в WordPress

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

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

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

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

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

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

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