WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

Режим Multisite в WordPress

С версии WordPress 3.0 можно создавать сети сайтов, где будет один главный сайт c супер администратором и сколько угодно подсайтов, у каждого из которых свой администратор. Такой режим установки называется Multisite, его еще исторически коротко называют MU (MultiUser).

В этом руководстве показано, как создать сеть сайтов на WordPress, установив WorrdPress в режиме Multisite.

Multisite - это новое название бывшего «WordPress MU», который до версии WordPress 3.0 был плагином, а затем стал частью WordPress.

Особенности Multisite

При установке WordPress в режиме «Мультисайт» все сайты сети будут храниться в единой базе данных, в единой папке на сервере и будут управляться единой установкой (ядром) WordPress. При этом сайтов может быть бесконечно много. Каждый сайт в сети Multisite настраивается отдельно. Однако, плагины, темы и пользователи становятся общими и это удобно.

Особенности и преимущества «Мультисайт»:
  • В MU: единый движок, одна база данных, общие темы и плагины, общая папка на сервере и поэтому:

    • WordPress обновляется одни раз для всей сети сайтов;
    • Плагины и темы устанавливаются одни раз для всей сети;
    • Плагины и темы обновляются одни раз для всей сети;
    • Плагин может быть активирован для отдельного сайта сети или для всех сайтов сразу;
    • Тема может быть «разрешена» для отдельного сайта сети или для всех сайтов сразу;
    • Если на нескольких сайтах сети используется одна тема, её можно изменять создав дочернюю тему.
  • Единая таблица пользователей в базе данных:

    • Зарегистрировавшись на одном из сайтов сети, пользователь получает учетную запись для всей сети;
    • Имеющегося в сети пользователя можно быстро добавлять к сайтам сети;
    • Авторизованный пользователь будет авторизован на всех сайтах сети, к которым он подключен;
    • Пользователи могут иметь разные роли на разных сайтах сети;
    • Супер-администратор может разрешить пользователям создавать свои собственные сайты в сети;
  • Адрес (URL) сайта сети может быть трех видов:

    • «подкаталог» - site.ru/site1
    • «поддомен» - site1.site.ru
    • отдельный домен. Но для этого нужно устанавливать плагин: WordPress MU Domain Mapping;
  • В MU очень удобно получать данные одного сайта сети на другом сайте и наоборот;

  • Обязательные плагины (mu-plugins) будут работать для всех сайтов сети. Их нельзя отключить для отдельного сайта. При этом их наличие будет видно только в плагинах всей сети, а в плагинах отдельного сайта они спрятаны;
Недостатки Multisite:
  • Сеть сайтов сложнее поддерживать - требуется больше знаний и умений.
  • Многие не популярные плагины не умеют работать в этом режиме.
  • Объем базы данных растет с каждым новым сайтом.
  • Ресурсы хостинга будут общие для всех сайтов и нет возможности разделить сайты между разными хостинг-площадками.
  • FTP доступ и доступ к базе данных, также будет общий для всех сайтов. Иногда это может стать проблемой.
  • При обновлении ядра WordPress или плагинов, изменения коснуться всей сети сайтов... Это может вызвать проблемы на некоторых сайтах сети.
к началу

Когда Multisite может пригодится?

Чаще всего проще использовать отдельную установку WordPress и не вдаваться в тонкости сети сайтов. Но иногда режим MU может быть незаменим или просто сэкономить кучу времени.

MU хорошо подойдет в следующих случаях:

  • Когда у вас есть несколько тесно связанных между собой сайтов. Например, у вас есть 3 сайта очень похожие друг на друга: «ремонт ванной», «ремонт гостиной», «ремонт спален» и для каждого из них нужен отдельный домен...
  • MU отлично подходит для создания мультиязычных сайтов;
  • Когда нужна одна учетная запись для авторизации на нескольких сайтах;
  • Когда нужен удобный механизм обмениваться данными между сайтами.

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

к началу

Установка Multisite

Устанавливается MU не сложно - просто!

1. Включаем установку MU

Перед запуском первой установки WordPress или после того, как вы уже установили WordPress - не важно. Откройте файл wp-config.php из основной папки WordPress и добавьте туда строчку:

define( 'WP_ALLOW_MULTISITE', true );

Добавить строку можно где-нибудь в начале файла, например, перед настройками подключения к БД.

2. Запускаем установку

После того как MU установка включена, нужно зайти в админ-панель и перейти в раздел Инструменты > Установка сети

multisite-install2

Теперь надо выбрать какой тип сети устанавливать: поддомены или подкаталоги:

  • Поддомены - каждый сайт сети будет иметь свой домен - поддомен основного домена: site1.site.ru, site2.site.ru.
    Для этого режима, нужно будет настроить сервер так, чтобы любой поддомен «смотрел» на папку куда установлен WordPress. Обычно это делается через обращение в службу поддержки вашего хостинг провайдера. Или можете попробовать, в панели управления хостингом, создать поддомен который начинается с * - *.site.ru.

  • Подкаталоги - все сайты сети будут иметь один домен: основной, и будут расположены под ним: site.ru/site1, site.ru/site2.
    Для работы этого режима нужно включить поддержку ЧПУ (красивых URL) в разделе: Настройки > Постоянные ссылки.

Какой режим выбрать, зависит от задач вашей сети сайтов. Чаще всего лучше выбирать режим поддоменов. С ними меньше проблем в дальнейшем - каждый сайт имеет свой личный домен, а значит нет потенциальных конфликтов URL, также в случае чего сайту можно купить отдельный домен. Режим подкаталогов хорошо подойдет, когда «мультисайт» используется, как единая сеть чего-то целого, например, для создания мультиязычного сайта.

После нажатия на кнопку «Установить», следуйте инструкциям, там все просто. В них WordPress попросит вас добавить несколько новых строк в файлы: wp-config.php и .htaccess.

Установка сети мультисайт

Все, готово! Сеть установлена и вам нужно снова войти на сайт, но теперь как супер-администратор.

На эту с страницу всегда можно попасть по прямой ссылке вида: http://multisite.ru/wp-admin/network/setup.php

к началу

Установка MU на уже рабочий сайт

MU можно установить и на рабочий сайт и это можно делать смело, если в этом есть смысл разумеется. Но прежде, обязательно сделайте резервную копию базы данных и файлов - мало ли что там может пойти не так...

Далее, деактивируйте все плагины и включите ЧПУ на сайте, если они не включены: Настройки > Постоянные ссылки.

Далее, следуйте инструкциям, которые чуть выше.

Переключение режимов: поддомены и подкаталоги

Если сайт существует больше месяца, то при включении установки MU будет доступен только режим поддоменов. Это нужно, чтобы избавить вас от потенциальных конфликтов между страницами и сайтами, например URL под-сайта (блога) может получиться такой же как URL страницы основного сайта: site.ru/superblog (подсайт) и site.ru/superblog (страница главного сайта). Если вашему сайту это не грозит, то режим можно изменить в любой момент, лучше конечно перед установкой MU.

Для смены режима измените константу SUBDOMAIN_INSTALL в файле wp-config.php:

define( 'SUBDOMAIN_INSTALL', true ); // поддомены

define( 'SUBDOMAIN_INSTALL', false ); // подкаталоги

Также, нужно будет обновить правила .htaccess.

Правильные правила после смены режима, вы найдете на странице адмни-панели: Управление сетью > Настройки > Установка сети. Иногда эта страница может быть скрыта, тогда пройдите по прямой ссылке вида: http://multisite.ru/wp-admin/network/setup.php

к началу

Управление сетью

При установке MU появляется новая роль «Супер-администратор» и новый раздел «Мои сайты» с вложенным пунктом «Управление сетью» - запомните этот пункт, потому что он основной.

Управление сетью

Супер-администратор может управлять всей сетью через пункт меню, который мы только что запомнили. А в нем можно: создавать сайты, новых пользователей, устанавливать, удалять, включать и отключать плагины и темы и т.д.

Консоль супер-администратора

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

Прикрепление пользователей в Мультисайтах

Еще немного особенностей для новичков:

Плагины: после установки плагина, супер-админ может включить плагин для всей сети сайтов сразу. Или можно перейти на отдельный сайт и активировать плагин только для текущего сайта сети.

Пользователи: супер-админ может создать нового пользователя или прикрепить существующего к указанному сайту.

Темы: после установки темы, супер-админ может разрешить использование темы для всех сайтов сразу. Или можно перейти в настройки отдельного сайта в разделе «сети сайтов» и разрешить использовать тему только для него.

Настройка отдельного сайта в режиме мультисайт

к началу

Структура сайтов и блогов

При установке MU появляются 3 новых понятия: сети, сайты и блоги. Чтобы многое стало ясно, давайте посмотрим как хранятся опции каждого типа.

В WordPress есть четыре похожие друг на друга функции для получения опций:

  1. get_network_option()
  2. get_site_option()
  3. get_blog_option()
  4. get_option()

Эти функции можно собрать в группы:

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(), только получает она опции указанного блога, а не текущего.

к началу

Отличия MU от обычной установки WordPress

Отличия в файлах

Файлы загружаются в ту же директорию wp-content/uploads. Более того, ничего не меняется для главного сайта сети. Изменения видны только для доп. сайтов сети: у них файлы загружаются в новую папку wp-content/uploads/sites/2, где 2 - это ID сайта сети.

Расположение файлов в сети мультисайт

Отличия в таблицах базы данных

Создается 6 новых таблиц с префиксом главного сайта. Таблицы: users и usermeta становятся общими для всех сайтов сети. Стольные таблицы создаются отдельно для каждого сайта и отличаются они префиксом, например если у главного сайта он был wp_, то у первого сайта сети он станет wp_1_.

Какие дополнительные таблицы создаются:

$wpdb->blogs
Все сайты подсети.
$wpdb->blog_versions
Содержит текущую версию базы данных каждого сайта. Данные обновляются при обновлении БД для каждого сайта сети.
$wpdb->registration_log
Содержит данные администраторов сайтов, которые создаются при создании сайтов.
$wpdb->signups
Содержит пользователей, которые были зарегистрированы через базовую регистрацию WordPress со страницы: Администрация > Супер Админ > Настройки.
$wpdb->site
Содержит, адреса основных сайтов.
$wpdb->sitemeta
Данные сайтов: различные опции, включая администратора сайта.
$wpdb->users
Список пользователей всех сайтов сети. Это общая таблица пользователей для всей сети. Это привычная таблица, только в мультисайт версии добавляются еще 2 поля: spam и delete.
wpdb->usermeta
Содержит мета-данные пользователей. Настройки пользователя для разных сайтов сети отличаются префиксом в индексе ключа. Например роли хранятся в таких метаполях: wp_capabilities, wp_1_capabilities, wp_2_capabilities ...
Базовые таблицы каждого сайта сети
wp_posts, wp_postmeta, wp_options, wp_terms и т.д.. Для каждого сайта сети создаются одинаковые таблицы, но с разным префиксом: wp_options, wp_1_options, wp_2_options ...

-

При написании были использованы следующие материалы и личный опыт:

Режим Multisite в WordPress 22 комментария
Полезные 2 Вопросы 5 Все
  • Margo

    Здравствуйте. Такой вопрос: у меня есть два сайта, один из них на поддомене. Можно ли их объединить в мультисайт и как это сделать?

    • Kama4457

      Можно. Включите режим мультисайт... Тут все написано, читайте "Установка MU на уже рабочий сайт"

      • Margo

        Как подключить мультисайт к основному сайту, я поняла. После этого нужно будет только объединить базы данных? Таблицы users и usermeta, насколько я поняла, остаются только от основного сайта, а у остальных нужно только изменить префиксы?

        • Kama4457

          Что-то про объединение я-то не подумал. Тут не все так просто получается...

          Нужно сделать примерно следующее

          1. Включить МУ на одном сайте, создать там второй сайт.

          2. Настройки второго лучше прописать (скопировать) через админку вручную...

          3. Пользователей объединить не получится, у них одна таблица в МУ... Но если это очень надо, придется программно переносить: взять данные юзеров из второго сайта и правильно добавить их в МУ сайт...

          4. Все остальные базовые таблицы второго сайта можно просто заменить: удалить их у МУ сайта, сделать их дамп из второго сайта и установить этот дамп на МУ сайт...

          П.С. Опыта такого нет, поэтому это только теория. Попробуйте это сделать на локалке где-то сперва...

          • Margo

            Спасибо, попробую. Главное - чтобы локальный сервер нормально воспринял мультисайты, а то я читала, что бывают сложности.

            -1
  • о! свеженькая тема, спасибо, обожаю твой сайт. подчерпнул еще знаний в этом непонятном для всех костыле)
    Но и столкнулся с проблемой. Мультисайт имеет одну тему для всех (flatsome) - на основном она настраивается (обычные визуальные настройки) и у нее есть свой билдер, все работает. На других доменах этой сети она тоже показывается, но в настройках и в билдере уходит в бесконечную загрузку. Не сталкивались с таким?

    Основной сайт http://an-privolgie.ru/
    Замапленный домен сети http://xn-----7kcfeifi0dligb2b.xn--p1ai/

    3
    • Mike

      Как оказалось проблема в совместимости в domain mapping plugin, отключая его на субдоменах все окей , однако рушится весь маппинг с другими доменами. что делать не понимаю(

  • Николай
    @

    Друзья! У меня проблема. Есть 3 сайта iter.su и vskroem.pro и agito.su
    Если я делаю обновления статей или записей с помощью плагина WP Multisite Content Copier на сайте iter.su - все хорошо!
    Если я делаю обновления статей или записей с помощью плагина WP Multisite Content Copier на сайте vskroem.pro , agito.su, то не получается обновления, а просто копируется новая одинаковая статья или запись. И на сайте получается две одинаковые статьи. Старая и измененная????

    Как сделать, чтобы была только одна измененная статья???

  • Денис
    @

    Всем привет, нужна помощь! Я пытаюсь настроить мультисайт на WordPress на поддоменах. Сделал все по инструкции, так же добавил на сервере:
    *.названиесайта.
    A (адрес Internet v4)
    адрес сервера

    В результате, поддомен работает - написано что сайт надежно припаркован (но ничего не отображает, кроме инфы reg.ru). Вроде все работает все отлично, НО при попытке зайти в админку поддомена выдает 404 ошибку, хотя в админку сети и админку основного домена заходит.

    Что-то подобное написано здесь https://wordpress.org/support/topic/multisite-log-in-problem-with-cookies-error/?replies=7
    Но у меня так ничего и не вышло! Помогите, плиз!!!

    • Денис
      @

      Вопрос закрыт. Обратился в поддержку сервера, оказалось я не добавил в параметрах www-домена *.punkti-priema.info. Теперь все работает

  • Андрей

    Ничего не написано о том, как добавить русский (кириллический) поддомен на домене, имя которого опять же кириллицей. Потому как если все делать как всегда, ругается "Не указан или неверен адрес сайта".

    Ответить3 месяца назад #
  • Darkhan cайт: azia2012.kz
    @

    Добрый день!

    Создал мультисайт azia2012.kz и azia2012.kz/en, второй сайт будет аналогичен первому только на английском языке, подскажете как объединить медия файлы, что бы отображались во втором сайте.

    Ответить3 месяца назад #
  • Николай
    @

    Решил на один домен попробовать. Но при переходе на мультисайт нужно деактивировать все активированные плагины. А потом при их активации их настройки вернуться, или по-новой надо настраивать?

    Ответить2 месяца назад #
    • Satico
      @

      Настройки вернуться после деактивации. В большинстве случаев настройки сохраняются даже после переустановки плагина.

      Ответить2 месяца назад #
    • Kama4457

      Обычно все настройки сохраняются. Зависит от плагина, но при деактивации плагины настройки не отменяют как правило...

      Ответить2 месяца назад #
  • Серге

    Добрый день!
    В мультисатинге нужно основной сайт перекатить на поддомен, а вместо запилить другой, как это сделать?

    Ответить2 месяца назад #
  • Денис
    @

    Привет всем!
    Подскажите, как правильно прописать директиву host в файле robots.txt для сайта на поддоменах? (WordPress Multisite) У меня один файл robots.txt в корне сайта, и он открывается на всех поддоменах.

    Вот содержание файла:

     User-agent: *
     Disallow: /wp-admin
     Disallow: /wp-content/cache
    
     User-agent: Yandex
     Disallow: /wp-admin
     Disallow: /wp-content/cache

    Можно создать файл robots.txt для каждого поддомена, но я не знаю как это реализовать? Подскажите, какой-нибудь плагин или что-то еще?
    Заранее большое спасибо!!!

    Ответить2 месяца назад #
    • Kama4457

      Вариант 1: создать динамический robots.txt.

      Вариант 2: прописать в .htaccess правила и в зависимости от поддомена отдавать разные файлы, которые разумеется будут лежать в разных местах, например, в корне каждого сайта...

      Вариант 3: в статическом, точно не знаю, но можно просто не указывать эту директиву чтобы поисковик сам определил хост...

      1
      Ответить2 месяца назад #
  • Стелла
    @

    Класс! Ссылка в конце на 2 сайта (впмаг и кодекс вп), но разжевано все намного лучше! Но все равно остаются вопросы...

    Мне нужно создать сайт в поддиректории уже существующего. Поэтому очень волнует это

    нет потенциальных конфликтов URL...
    Это нужно, чтобы избавить вас от потенциальных конфликтов между страницами и сайтами, например: site.ru/pagename и site.ru/sitename.

    Не совсем понятно, извините - если, например, будет страница site.ru/brand-catalog на основном сайте, а доп.сайт будет называться site.ru/katalog - то тогда конфликт урлов возникнет или нет?
    Далее

    Многие плагины не умеют работать в этом режиме.

    Если многие - то это уже серьезно! Но какие? У Вас есть в этом личный опыт?
    Вот еще в кодексе сказано, что не рекомендуется использовать мультисайты на виртуальном хостинге - а почему, не объяснено...

    Ответитьмесяц назад #
    • Kama4457

      Мне нужно создать сайт в поддиректории уже существующего. Поэтому очень волнует это

      Не совсем понял как это smile Подсайт создается сам по себе а не в поддиректории. Но в тоже время если указать главную страницу сайта как например http://site.ru/site, то он будет как бы в поддиректории site. Но это все же будет его личная ссылка на главную...

      Подправил описание, чтобы было понятнее

      Если сайт существует больше месяца, то при включении установки MU будет доступен только режим поддоменов. Это нужно, чтобы избавить вас от потенциальных конфликтов между страницами и сайтами, например URL под-сайта (блога) может получиться такой же как URL страницы основного сайта: site.ru/superblog (подсайт) и site.ru/superblog (страница главного сайта).

      Не совсем понятно, извините - если, например, будет страница site.ru/brand-catalog на основном сайте, а доп.сайт будет называться site.ru/katalog - то тогда конфликт урлов возникнет или нет?

      Нет, не возникнет.

      Если многие - то это уже серьезно! Но какие? У Вас есть в этом личный опыт?

      Опыта большого нет, но то и дело попадаются плагины, которые не поддерживают мультисайты. Хотя все популярные плагины работают с MU хорошо...

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

      Это вообще какое-то неоднозначное и странное заявление, может перевод кривой... unknw

      Ответитьмесяц назад #
      • Стелла
        @

        Подсайт создается сам по себе а не в поддиректории. Но в тоже время если указать главную страницу сайта как например http://site.ru/site, то он будет как бы в поддиректории site. Но это все же будет его личная ссылка н
        а главную...

        Именно так и хочу. Т.е. в режиме подкаталогов. Чтобы и поисковикам и людям казалось, что это как бы раздел моего сайта. Сейчас сделала подобное на хостинге с помощью опции автоподдоменов, но очень неудобно, потому что 2 админки, 2 установки ВП и т.д. И вообще хочу осенью тикать на Спектр Джино, и чтобы платить там по минимуму. smile

        Не пойму еще, вообще мультисайты можно протестировать локально? В кодексе что-то там говорится про ограничения localhost и 127.0.0.1. Попробовала тестировать так свой реальный сайт на Эндельсе, но что то там у меня не получается в режиме подкаталогов. Не пойму теперь, этот режим вообще возможен или нет?
        Вот в кодексе сказано

        Постоянные ссылки по-прежнему будут работать, хотя на основном блоге (т.е. на первом из созданных) к адресам будет добавлен префикс blog, и они примут вид domain.com/blog/YYYY/MM/POSTNAME
        На текущий момент нет простого способа это изменить, поскольку в этом случае WordPress не сможет автоматически разрешать конфликты между основным и дочерними сайтами. Это будет исправлено в одной из следующих версий WordPress.

        Так как это писалось, видимо, уже давно, то непонятно, исправили это уже на сегодняшний день или до сих пор нет?

        Так вот. После установки сети и перестройки ее на define( 'SUBDOMAIN_INSTALL', false ); нашла в настройках главного сайта /blog/%year%/%monthnum%/%day%/%postname%/, изменила это дело на прежнее /%category%/%postname%/, затем обновила пост.ссылки - мой сайт стал как прежний.
        А вот с новым сайтом незадача вышла. Вроде он и появился, но не работает. Пробую на него перейти, но заявляет "Каталог темы Twentyseventeen не существует". Ее у меня и нет даже!
        Тогда в настройках доп-сайта нашла Template = twentyseventeen и Stylesheet = twentyseventeen, заменила на parabola (у меня такая тема). Сайт стал открываться, но выглядит все очень криво.
        А в консоль доп-сайта вообще войти не могу - "не найдено".

        Ответитьмесяц назад #

Здравствуйте, !

Ваш комментарий