WordPress Мультисайт
С версии WordPress 3.0 можно создавать сети сайтов, где будет один главный сайт c супер администратором и сколько угодно подсайтов, у каждого из которых свой администратор. Такой режим установки называется Multisite, его еще исторически коротко называют MU (MultiUser).
В этом руководстве показано, как создать сеть сайтов на WordPress, установив WorrdPress в режиме Multisite.
Multisite - это новое название бывшего «WordPress MU», который до версии WordPress 3.0 был плагином, а затем стал частью WordPress.
Читайте также: Установка Multisite
Особенности Multisite
При установке WordPress в режиме «Мультисайт» все сайты сети будут храниться в единой базе данных, в единой папке на сервере и будут управляться единой установкой (ядром) WordPress. При этом сайтов может быть бесконечно много. Каждый сайт в сети Multisite настраивается отдельно. Однако, плагины, темы и пользователи становятся общими и это удобно.
Особенности и преимущества «Мультисайт»:
-
В MU: единый движок, одна база данных, общие темы и плагины, общая папка на сервере и поэтому:
- WordPress обновляется один раз для всей сети сайтов;
- Плагины и темы устанавливаются один раз для всей сети;
- Плагины и темы обновляются один раз для всей сети;
- Плагин может быть активирован для отдельного сайта сети или для всех сайтов сразу;
- Тема может быть «разрешена» для отдельного сайта сети или для всех сайтов сразу;
- Если на нескольких сайтах сети используется одна тема, её можно изменять создав дочернюю тему.
-
Единая таблица пользователей в базе данных:
- Зарегистрировавшись на одном из сайтов сети, пользователь получает учетную запись для всей сети;
- Имеющегося в сети пользователя можно быстро добавлять к сайтам сети;
- Авторизованный пользователь будет авторизован на всех сайтах сети, к которым он подключен;
- Пользователи могут иметь разные роли на разных сайтах сети;
- Супер-администратор может разрешить пользователям создавать свои собственные сайты в сети;
-
Адрес (URL) сайта сети может быть трех видов:
- Подкаталог - example.com/site1.
- Поддомен - site1.example.com.
- Отдельный домен. С версии 4.5 эту возможность внедрили в ядро, подробнее здесь. До этой версии для этого нужно было устанавливать плагин: WordPress MU Domain Mapping.
-
В MU очень удобно получать данные одного сайта сети на другом сайте и наоборот;
- Обязательные плагины (mu-plugins) будут работать для всех сайтов сети. Их нельзя отключить для отдельного сайта. При этом их наличие будет видно только в плагинах всей сети, а в плагинах отдельного сайта они спрятаны;
Недостатки Multisite:
- Сеть сайтов сложнее поддерживать - требуется больше знаний и умений.
- Многие не популярные плагины не умеют работать в этом режиме.
- Объем базы данных растет с каждым новым сайтом.
- Ресурсы хостинга будут общие для всех сайтов и нет возможности разделить сайты между разными хостинг-площадками.
- FTP доступ и доступ к базе данных, также будет общий для всех сайтов. Иногда это может стать проблемой.
- При обновлении ядра WordPress или плагинов, изменения коснуться всей сети сайтов... Это может вызвать проблемы на некоторых сайтах сети.
Когда Multisite может пригодится?
Чаще всего проще использовать отдельную установку WordPress и не вдаваться в тонкости сети сайтов. Но иногда режим MU может быть незаменим или просто сэкономить кучу времени.
MU хорошо подойдет в следующих случаях:
-
Когда у вас есть несколько тесно связанных между собой сайтов. Например, у вас есть 3 сайта очень похожие друг на друга: «ремонт ванной», «ремонт гостиной», «ремонт спален» и для каждого из них нужен отдельный домен...
-
MU отлично подходит для создания мультиязычных сайтов - один подсайт = одна локаль.
- Когда нужна одна учетная запись для авторизации на разных сайтах.
В остальных случаях, я бы рекомендовал использовать простую установку WordPress. С ней у вас не будет кучи лишних вопросов - с ней проще!
Управление сетью
После установке MU появляется новая роль «Супер-администратор» и новый раздел «Мои сайты» с вложенным пунктом «Управление сетью» - запомните этот пункт, им вы будите пользоваться часто.
Супер-администратор может управлять всей сетью через пункт меню «Управление сетью». А в нем можно: создавать сайты, новых пользователей, устанавливать, удалять, включать и отключать плагины и темы и т.д.
В остальном, когда переключитесь на отдельный сайт, все абсолютно тоже самое как и в обычной установке WordPress. Единственное отличие: на странице добавления пользователей, мы можем прикреплять имеющихся пользователей к текущему сайту.
Еще немного особенностей для новичков:
Плагины: после установки плагина, супер-админ может включить плагин для всей сети сайтов сразу. Или можно перейти на отдельный сайт и активировать плагин только для текущего сайта сети.
Пользователи: супер-админ может создать нового пользователя или прикрепить существующего к указанному сайту.
Темы: после установки темы, супер-админ может разрешить использование темы для всех сайтов сразу. Или можно перейти в настройки отдельного сайта в разделе «сети сайтов» и разрешить использовать тему только для него.
Структура сайтов и блогов
При установке MU появляются 3 новых понятия: сети, сайты и блоги. Чтобы многое стало ясно, давайте посмотрим как хранятся опции каждого типа.
В WordPress есть четыре похожие друг на друга функции для получения опций:
Эти функции можно собрать в группы:
get_network_option() равно get_site_option()
get_blog_option() равно get_option()
«Сайты» они же «Сети» в MU
Это основные сайты (которые по совместительству тоже блоги). Обычно такой основной сайт всего один. У него есть все те же данные что и у любого блога (своя таблица wp_options). Однако у него также есть свои опции, которые находятся в таблице wp_sitemeta
. Именно из wp_sitemeta
получают данные функции: *_network_option() и *_site_option().
get_network_option() - это фундаментальная функция, ей можно указать ID сети (главного сайта) для которой мы хотим получить опции. А get_site_option() - это её обертка и в ней мы не может указать ID сети - там всегда используется текущая сеть.
Повторюсь, в мультисайт сборке, как правило используется всего один основной сайт (сеть), это значит что в 99% случаев опция get_network_option() равна get_site_option().
«Блоги» в MU
Это сайты, которые находятся под управлением основного сайта (сети). У каждого из таких блогов есть отдельная таблица *_options. get_blog_option() получает данные из этой таблицы. По сути это обертка для функции get_option(), только получает она опции указанного блога, а не текущего.
Отличия Multisite от обычной установки
Отличия в файлах
Файлы загружаются в ту же директорию wp-content/uploads. Более того, ничего не меняется для главного сайта сети. Изменения видны только для доп. сайтов сети: у них файлы загружаются в новую папку wp-content/uploads/sites/2, где 2 - это ID сайта сети.
Отличия в таблицах базы данных
Создается 6 новых таблиц с префиксом главного сайта. Таблицы: users и usermeta становятся общими для всех сайтов сети. Стольные таблицы создаются отдельно для каждого сайта и отличаются они префиксом, например если у главного сайта он был wp_, то у первого сайта сети он станет wp_1_.
Какие дополнительные таблицы создаются:
- wp_blogs
- Все сайты подсети.
- wp_blogmeta
C версии 5.1. Подробнее. Таблица для глобальных опций сайта сети, которые предполагается использовать в сети сайта, а не отдельно на сайте. Отдельные опции сайта нужно хранить в таблице опций отдельного сайта. Не путайте с wp_sitemeta.
Связанные функции:
get_site_meta( $id, $meta_key, $single ) update_site_meta( $id, $meta_key, $meta_value, $prev_value ) add_site_meta( $id, $meta_key, $meta_value, $unique ) delete_site_meta( $id, $meta_key, $meta_value )
- wp_blog_versions
- Содержит текущую версию базы данных каждого сайта. Данные обновляются при обновлении БД для каждого сайта сети.
- wp_registration_log
- Содержит данные администраторов сайтов, которые создаются при создании сайтов.
- wp_signups
- Содержит пользователей, которые были зарегистрированы через базовую регистрацию WordPress со страницы:
Администрация > Супер Админ > Настройки
. - wp_site
- Содержит, адреса основных сайтов.
- wp_sitemeta
- Данные сайтов: различные опции, включая администратора сайта.
- wp_users
- Список пользователей всех сайтов сети. Это общая таблица пользователей для всей сети. Это привычная таблица, только в мультисайт версии добавляются еще 2 поля: spam и delete.
- wp_usermeta
- Содержит мета-данные пользователей. Настройки пользователя для разных сайтов сети.
- Базовые таблицы каждого сайта сети
- wp_posts, wp_postmeta, wp_options, wp_terms и т.д.. Для каждого сайта сети создаются одинаковые таблицы, но с разным префиксом: wp_options, wp_1_options, wp_2_options ...
-
При написании были использованы следующие материалы и личный опыт: