0,0
рейтинг
15 августа 2014 в 18:29

Разработка → Понимание и работа с данными в WordPress. Часть 1. Введение перевод tutorial


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


Замечание от переводчика
В переводе используется терминология согласно кодексу WordPress
  • Post — запись,
  • Page — страница,
  • Attachment — вложение,
  • Revision — редакция,
  • Comment — комментарий,
  • Taxonomy — таксономия,
  • Category — категория
  • Tag — метка,
  • Term — термин (конкретное значение пользовательской таксономии)
  • User — пользователь
  • Metadata — метаданные

Исключение составляет лишь термин content. В большинстве случаев используется не перевод «содержимое», а — «контент». Я считаю, данный перевод является более корректным по тексту.
В некоторых случаях в скобках приводится расшифровка на английском для однозначного понимания.

Замечания об ошибках и опечатках прошу сообщать в личку.


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

  • Сама установка WordPress
  • Содержимое каталога wp-content, которое включает темы, плагины и загрузками
  • База данных, где хранится контент в виде данных.

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

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

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

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

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


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

  • Записи (posts)
  • Страницы (pages)
  • Пользовательские типы записей (custom post types)
  • Вложения (attachments)
  • Ссылки (links)
  • Элементы меню (navigation menu items)

Эти типы контента имеют такие данные:

  • Категории (categories)
  • Метки (tags)
  • Пользовательские таксономии (custom taxonomies and terms)
  • Метаданные (post metadata)

Кроме того существует типы контента, хранящиеся в ином виде:

  • Виджеты (widgets)
  • Опции (options)
  • Пользователи (users)
  • Сайты для MU WordPress
  • Нестандартный контент (hardcoded content), который добавляют некоторые темы/плагины.
  • Сторонний контент (third party content) (например RSS)

Все эти типы контента хранятся в таблицах базы данных или в файлах настроек тем/плагинов. Каждый тип может быть представлен как отдельной записью в таблице, так и её частью. Кроме, того они могут быть связаны с данными в других таблицах. Например, данные о записях связаны с данными о пользователях, так что 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 не хранит связи о комментариях и пользователе, который их отправил.
  • WordPress MU иметь некоторые дополнительные таблица. Их рассмотрение выходит за рамки данной статьи.

Связь контента и таблиц базы данных



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

Тип контента Таблица
Записи (posts) wp_posts
Страницы (pages) wp_posts
Пользовательские типы записей (custom post types) wp_posts
Вложения (attachments) wp_posts
Ссылки (links) wp_links
Элементы меню (navigation menu items) wp_posts
Категории (categories) wp_terms
Метки (tags) wp_terms
Пользовательские таксономии (custom taxonomies) wp_term_taxonomy
Термины пользовательских таксономий (custom terms) wp_terms
Метаданные (post metadata) wp_post_meta
Виджеты (widgets) wp_options
Опции (options) wp_options
Пользователи (users) wp_users
Нестандартный контент (hardcoded content) wp_posts (если добавлен к записям)
wp_options (если добавлен к виджетам)
Файлы тем/плагинов
Стороний контент (third party content) wp_posts (если добавлен к записям)
wp_options (если добавлен к виджетам)
Файлы тем/плагинов


Легко заметить, что не все таблицы используются в перечне. Так происходит потому, что некоторые из них используются для хранения метаданных. Другие используются для хранения связей. Оба варианта будут рассмотрены в последующих статьях.

Заключение



Надеюсь, что теперь вы лучшее понимаете, как и где WordPress хранит различные типы данных, как использует базу данных. Более подробно элементы этого процесса будут рассмотрены в последующих статьях. Так в следующей статье будут рассмотрены взаимосвязи между данными. А так же мы остановимся более подробно на том, как конкретные таблицы связаны и как некоторые из них используются исключительно для хранения данных об взаимосвязях.
Стоит ли переводить последующие статьи
81%
(341)
Да
11%
(45)
Нет (не интересно или прочту на английском)
8%
(33)
Мне без разницы

Проголосовало 419 человек. Воздержалось 48 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Перевод: Rachel McCollin
Никита Галкин @galk_in
карма
46,2
рейтинг 0,0
Backend developer
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (4)

  • +1
    Такое ощущение, что совсем не было вычитки по статье, очень много ошибок и повсеместно используется калька с английского языка. Очень тяжело читать ваш перевод.

    Вообще, перевод этой серии статей на русский язык был бы очень полезен, например, я не так давно столкнулся с wordpress, и сейчас (после длительного использования нормальных фреймворков вроде Yii,Laravel, Symphony) нахожусь в перманентном… эм… замешательстве от того, как он написан и как в нем хранятся данные.

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

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

    В общем, продолжайте, пожалуйста, переводить цикл статей, но уделите хоть немного времени перечитыванию текста после того, как закончили перевод.
    • 0
      Да, впечатление такое, что это хороший, но АВТОпереводчик. Либо обычный автоперевод, плохо вычитанный
  • +1
    Следующие статьи переводить однозначно стоит! Спасибо!
  • +1
    таблицы в ВП унифицированы. тоесть

    posts (и другие постатайпы) — $wp->posts
    meta -> $wp->{$ref}meta (postmeta, usermeta, commentmeta при желании и termmeta)
    users -> $wp->users
    terms/taxonomies/term_relations немного не оптимизировано но относиться к таксономиям
    links давно уже не актуально.
    ну и опции.

    эсли это перевод то источник устарел очень давно, ну и ценность данной информации слегка подсомненьем.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.