Статьи

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

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

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

Это означает, что есть три элемента для понимания того, как работает база данных в Multisite:

  • Таблицы базы данных для основного сайта
  • Таблицы базы данных для сети
  • Таблицы базы данных для каждого дополнительного сайта.

Я начну с рассмотрения того, как WordPress хранит данные для основного сайта.

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

  • wp_posts
  • wp_postmeta
  • wp_comments
  • wp_commentmeta
  • wp_users
  • wp_usermeta
  • wp_links
  • wp_term_relationships
  • wp_term_taxonomy
  • wp_terms
  • wp_options

Они будут содержать данные, относящиеся к основному сайту. Два из них также будут содержать данные, относящиеся к остальной части сети. Эти:

  • wp_users
  • wp_usermeta

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

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

Эти:

  • wp_blogs
  • wp_blog_versions
  • wp_registration_log
  • wp_signups
  • wp_site
  • wp_sitemeta
  • wp_sitecategories (необязательно)

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

Стол Данные Примечания
wp_blogs В этом поле хранится информация о каждом сайте в сети, поэтому для каждого сайта имеется только одна запись. Поля включают blog_id , domain , registered (данные, на которых был создан сайт) и last_updated (опять же, дата).
wp_blog_versions Текущая версия базы данных для каждого сайта, обновляется при обновлении сети. Три поля: blog_id , db_version и last_updated
wp_registration_log Пользователь admin, созданный при регистрации каждого сайта Для каждого сайта (идентифицируемого blog_id ) в таблице хранятся user_id для администратора, их адрес электронной почты и дата, которую они зарегистрировали.
wp_signups Хранит данные на сайтах, которые были зарегистрированы, но не активированы Поля включают уникальный signup_id для каждой записи, домен, на который зарегистрировано, название, логин пользователя и адрес электронной почты. Как только сайт активирован, эта запись удаляется, и запись создается в wp_blogs .
wp_site Хранит URL для основного сайта Эта таблица имеет только одну запись с тремя полями: идентификатор основного сайта (который будет равен 1 ), его домен и путь (обычно / )
wp_sitemeta Хранит метаданные для сети Эта таблица является эквивалентом wp_options для всей сети. Он содержит все метаданные, относящиеся к настройкам сети, а также меньшее количество метаданных для отдельных сайтов. Он имеет четыре поля: уникальный meta_id , site_id (который ссылается на wp_blogs ), meta_key и meta_value .
wp_sitecategories Необязательная таблица создается только в том случае, если для сайта включены глобальные термины . Включение глобальных терминов позволяет использовать термины для нескольких сайтов в сети. Таблица (если она создана) будет иметь четыре поля: cat_ID , cat_name , category_nicename и last_updated . Обратите внимание, что в этих таблицах хранятся термины, а не только категории, несмотря на имена полей.
wp_users Данные обо всех пользователях хранятся здесь, а не для каждого сайта, поскольку отдельные пользователи могут иметь доступ к нескольким сайтам в сети. В многоэтапной установке WordPress создает два дополнительных поля в таблице wp_users : спам и удаленные, оба из которых являются логическими значениями по умолчанию NO .
wp_usermeta В таблицах wp_usermeta хранятся все метаданные для всех пользователей сайта. Таблица используется так же, как и для установки на одном сайте.

Большинство этих таблиц связаны с таблицей wp_blogs через поле blog_ID , так как все данные, необходимые для сайтов в сети, необходимо будет связать с основной записью сайта. Исключениями являются:

  • wp_sitecategories , который ссылается на сообщения и другой контент
  • wp_signups , так как это еще не зарегистрированные сайты
  • wp_usermeta , который имеет косвенную ссылку на wp_blogs через wp_users

Подробнее о каждой из этих таблиц и их полях см. На странице Кодекса в базе данных.

Способ, которым WordPress хранит данные для каждого из сайтов в вашей сети, довольно прост: он создает несколько копий каждой из таблиц базы данных, по одной для каждого сайта. Однако он не создает дополнительных копий wp_users и wp_usermeta как все они хранятся в основной таблице.

Чтобы различать таблицы для каждого сайта, WordPress добавляет идентификатор сайта к имени таблицы, поэтому, например, для сайта 2 wp_posts становится wp_2_posts .

Каждый сайт будет иметь следующие таблицы:

  • wp_xx_posts
  • wp_xx_postmeta
  • wp_xx_comments
  • wp_xx_commentmeta
  • wp_xx_links
  • wp_xx_term_relationships
  • wp_xx_term_taxonomy
  • wp_xx_terms
  • wp_xx_options

xx выше будет заменен числовым идентификатором сайта. Все эти таблицы хранят данные таким же образом для каждого сайта, как если бы сайт был установлен на одном сайте.

Если вы управляете, извлекаете или перемещаете данные из установки WordPress Multisite, важно понимать, каким образом Multisite хранит данные не так, как установка Multisite.

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