WordPress Multisite: как создать сеть сайтов на одной установке

WordPress Multisite: как создать сеть сайтов на одной установке

Быстрый ответ: WordPress Multisite — режим ядра, в котором из одной установки работает целая сеть сайтов: общие файлы, темы и плагины, но отдельные базы записей у каждого сайта. Включается одной строкой define('WP_ALLOW_MULTISITE', true) в wp-config.php, затем сеть доустанавливается через панель администратора или WP-CLI. Сайты сети получают адреса в виде поддоменов (site1.dom.ru) или подкаталогов (dom.ru/site1) и управляются централизованно из единой админки. Multisite выгоден для сети блогов, мультиязычных проектов и сервисов с подписчиками; для независимых бизнес-сайтов с разными темами чаще проще отдельные установки.

Разработчику WordPress рано или поздно приходит задача: сделать несколько сайтов с единой базой плагинов, общими темами и централизованным обновлением — и каждый раз переустанавливать WordPress кажется лишним. Если вы уже разобрались с дочерними темами и хуками, самое время познакомиться с Multisite. Это встроенная в ядро функция, и настраивается она без сторонних плагинов. В статье разберём, когда сеть нужна, как её включить через панель и WP-CLI, чем различаются поддомены и подкаталоги, и как обслуживать сеть: плагины, темы, пользователи, бэкапы.

Что такое WordPress Multisite и когда он нужен

Multisite — это режим WordPress, при котором одна установка ядра обслуживает несколько сайтов. У всех сайтов сети общие файлы (ядро, темы, плагины) и одна база данных, но записи, страницы, медиафайлы и пользователи у каждого сайта свои. Администратор сети управляет всем из единой панели: устанавливает плагины и темы, создаёт сайты, выдаёт роли.

Типичные сценарии, где Multisite оправдан:

  • Сеть блогов или разделов. Несколько тематических блогов на одном движке с общим входом и общей админкой.
  • Мультиязычный сайт. Каждый сайт сети — отдельный язык проекта (dom.ru, dom.ru/en, dom.ru/de или en.dom.ru).
  • Клиентские проекты в студии. Студия ведёт много сайтов и хочет централизованно обновлять плагины и ядро, не заходя в каждую админку.
  • SaaS и платформы. Сервис, где пользователи сами создают сайты (конструкторы, «свой блог за 5 минут»).

А вот когда Multisite не подходит: если сайты — это независимые бизнесы с разными доменами, разными наборами плагинов и своим бюджетом. Падение одного сайта может задеть общую базу, а ограничения на домены потребуют плагинов типа Domain Mapping. Для независимых проектов надёжнее отдельные установки.

Multisite vs отдельные установки: сравнительная таблица

Прежде чем включать сеть, честно сравните оба варианта: экономия на обслуживании против жёсткой связки всех сайтов.

Критерий WordPress Multisite Отдельные установки
Обновление ядра и плагинов одним кликом для всей сети по каждому сайту отдельно
Плагины общие для всех, активация по сайтам свой набор на каждом сайте
Темы общий каталог тем своя тема на каждом сайте
База данных одна на все сайты (много таблиц) у каждого сайта своя
Сбой плагина возможен эффект на всю сеть локальная проблема
Свои домены только с плагином Domain Mapping без ограничений
Пользователи общая база пользователей свои у каждого сайта
Бэкап копировать всю сеть целиком каждый сайт отдельно

Главный критерий выбора — насколько сайтам нужна автономия. Сеть из 5 блогов одной студии — это Multisite. Пять сайтов разных клиентов — это пять отдельных установок.

Подготовка к установке: бэкап и требования

Переключение обычной установки в Multisite — необратимая операция над базой данных: WordPress добавит сетевые таблицы и изменит структуру. Поэтому до старта обязательно сделайте резервную копию. Для переноса и восстановления подойдёт гайд по резервному копированию WordPress.

Технические требования к сети:

  • Apache + mod_rewrite или nginx — поддомены сети требуют wildcard-записи *.dom.ru в DNS и настройки поддоменов в панели хостинга.
  • PHP 7.4+ и MySQL 8 — стандартные требования современного ядра.
  • Доступ к файлам — нужно править wp-config.php и .htaccess.
  • Свежее обновление — перед переключением обновите ядро, темы и плагины до последних версий.

Также отключите кэширующие плагины до переключения, чтобы не получить «кашу» из старых страниц: после установки сети очистите кэш — как описано в статье про кэширование WordPress.

Установка Multisite через wp-config.php и панель

Самый наглядный способ — графический. Он подходит для виртуального хостинга, где поддомены уже настроены в панели.

Шаг 1. Включите режим сети. Откройте wp-config.php и добавьте перед строкой /* That's all, stop editing! */:

define('WP_ALLOW_MULTISITE', true);

Шаг 2. Запустите установку сети. В админке появится пункт Инструменты → Настройка сети. Выберите тип адресов (поддомены или подкаталоги), задайте название сети и E-mail администратора, нажмите «Установить».

Шаг 3. Пропишите сетевые константы. WordPress покажет блок констант, которые нужно добавить в wp-config.php:

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'dom.ru');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

Шаг 4. Обновите .htaccess. Замените директивы rewrite на те, что показывает мастер (для поддоменов), либо добавьте их в конфигурацию nginx. После этого перезайдите в админку — в меню появится пункт Мои сайты.

Готово: сеть работает, и вы можете создавать сайты через Мои сайты → Сеть администратора → Сайты → Добавить новый.

Установка Multisite через WP-CLI

Если у вас есть SSH-доступ, WP-CLI сделает всё командой — быстрее и без «мастера». Сначала проверьте установку:

wp core is-installed && wp --info

Добавьте в wp-config.php разрешение сети:

wp config set WP_ALLOW_MULTISITE true --raw

Теперь сконвертируйте установку в сеть. Для поддоменов:

wp core multisite-convert --subdomains

Для подкаталогов (по умолчанию):

wp core multisite-convert

Либо установите сеть с нуля на чистой базе (например, для нового проекта):

wp core multisite-install --url=dom.ru --base=/ --subdomains --title="Моя сеть" --admin_email=admin@dom.ru

В конце WP-CLI выведет константы для wp-config.php и правила rewrite для .htaccess — выполните это вручную, так как команда сама файлы не меняет. После этого проверьте список сайтов:

wp site list

Поддомены или подкаталоги: как выбрать

Тип адресов выбирается один раз при установке сети — менять его потом больно (потребуется перенос контента с перезаписью ссылок, тут пригодится опыт из статьи про импорт и экспорт в WordPress). Поэтому решайте сразу.

Критерий Поддомены (site1.dom.ru) Подкаталоги (dom.ru/site1)
Пример адреса en.dom.ru, shop.dom.ru dom.ru/en, dom.ru/shop
DNS нужна wildcard-запись *.dom.ru не нужна
SSL-сертификат wildcard или на каждый поддомен один на домен
Восприятие SEO сайты выглядят независимыми все — части одного домена
Хостинг поддерживают не все тарифы работает везде
Кому подходит сеть отдельных блогов, SaaS мультиязычные и разделы

Для мультиязычного сайта почти всегда выбирают подкаталоги или отдельные домены языков — так поисковики видят единый сайт. Для сети независимых блогов — поддомены.

Управление сетью: сайты, пользователи, темы и плагины

В Multisite появляются две роли: суперадмин (управляет всей сетью) и обычные администраторы сайтов. Суперадмин видит в панели раздел Мои сайты → Сеть администратора.

Создание сайта. Мои сайты → Сеть администратора → Сайты → Добавить новый: укажите адрес, название и E-mail администратора. Записи, темы и плагины сайта изолированы друг от друга.

Плагины. Суперадмин устанавливает плагин для всей сети, но активирует его по выбору: Активировать для всей сети (плагин включён на всех сайтах, обычный админ не сможет его отключить) либо просто «Установить», тогда каждый администратор сайта решает сам.

Запрет активации плагина в сети. Если нужно разрешить пользователям ставить свои плагины, но сетевые — защитить, добавьте в wp-config.php:

define('DISABLE_NETWORK_PLUGINS', false);

А чтобы полностью запретить обычным администраторам ставить и активировать плагины на своих сайтах, оставьте активацию «только для сети» и включите фильтр:

add_filter('map_meta_cap', function($caps, $cap) {
    if (in_array($cap, ['activate_plugins', 'install_plugins', 'delete_plugins'], true)) {
        $caps = ['do_not_allow'];
    }
    return $caps;
}, 10, 2);

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

Полезные сниппеты для работы с сетью

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

Переключение между сайтами в цикле. Чтобы собрать данные со всех сайтов (например, последние записи сети), используйте switch_to_blog():

<?php
foreach (get_sites() as $site) {
    switch_to_blog($site->blog_id);
    $latest = get_posts(['numberposts' => 1]);
    if ($latest) {
        echo '<p>' . get_bloginfo('name') . ': ' . $latest[0]->post_title . '</p>';
    }
}
restore_current_blog();

Список сайтов пользователя. Функция get_blogs_of_user() вернёт все сайты сети, где зарегистрирован пользователь:

<?php
$blogs = get_blogs_of_user(get_current_user_id());
foreach ($blogs as $blog) {
    echo '<a href="' . $blog->siteurl . '">' . $blog->blogname . '</a><br>';
}

URL сайта сети. Адрес конкретного сайта без переключения контекста:

<?php echo get_site_url(2); // URL второго сайта сети

Хук активации сайта. Действие, выполняемое при создании нового сайта, — удобно для предзаполнения настроек:

add_action('wp_initialize_site', function($site) {
    switch_to_blog($site->id);
    update_option('blogdescription', 'Сайт сети ' . get_site_url($site->id));
    restore_current_blog();
});

Все примеры безопасны для копирования в functions.php темы или в свой мини-плагин. Чуть больше про события ядра — в статье про хуки WordPress.

Частые проблемы Multisite и их решение

  1. Не открывается новый поддомен. Чаще всего не настроена wildcard-запись DNS или правило rewrite в nginx. Проверьте, что *.dom.ru указывает на сервер, и добавьте конфигурацию поддоменов в панель хостинга.
  2. Картинки не загружаются. Медиафайлы каждого сайта хранятся в своих папках wp-content/uploads/sites/{id}. Если папка не создаётся — проверьте права на запись для wp-content.
  3. Бэкап слишком большой. Вся сеть — это одна база с десятками тысяч таблиц. Оптимизируйте план бэкапа: файлы и базу — по расписанию, только сетевые таблицы — чаще. Подробнее про стратегии — в гайде по бэкапам WordPress.
  4. Плагин не поддерживает Multisite. Часть плагинов работает только в обычном режиме. Проверяйте совместимость до установки; критичные для сети плагины тестируйте на тестовом сайте сети.
  5. Конфликт кэша. Некоторые кэш-плагины по умолчанию не различают сайты сети, и посетители видят чужие копии страниц. Настройте раздельный кэш по сайтам или используйте сетевой кэш уровня хостинга — см. кэширование WordPress.
  6. Безопасность. Одна уязвимость в плагине может задеть всю сеть. Минимальный набор защитных настроек описан в гайде по безопасности WordPress — для сети он обязателен.

Частые вопросы

Чем Multisite отличается от обычного WordPress?

Обычный WordPress обслуживает один сайт. Multisite — режим ядра, в котором одна установка работает как сеть сайтов: общие файлы, темы и плагины, но отдельные записи и медиа у каждого сайта, а управление — из единой админки.

Поддомены или подкаталоги — что выбрать для сети?

Для мультиязычного сайта и разделов одного проекта — подкаталоги (dom.ru/en), они не требуют wildcard-DNS и работают на любом хостинге. Для сети независимых блогов и SaaS — поддомены (en.dom.ru), они выглядят автономными сайтами.

Можно ли использовать разные плагины на разных сайтах сети?

Да. Плагины устанавливаются один раз для всей сети, но активируются по каждому сайту отдельно. Суперадмин может принудительно активировать плагин «для всей сети» — тогда обычные администраторы не смогут его отключить.

Можно ли перевести существующий сайт в Multisite?

Да, через «Инструменты → Настройка сети» или WP-CLI (wp core multisite-convert). Перед этим обязателен бэкап: операция меняет структуру базы данных. После переключения старый сайт становится первым сайтом сети.

Multisite замедляет сайт?

При правильной настройке — нет: скорость зависит от хостинга и кэша, а не от режима. Но на слабом общем хостинге большая сеть нагружает базу сильнее, поэтому для сети нужен адекватный тариф и кэширование.

Как сделать резервную копию всей сети?

Скопируйте файлы и сделайте дамп всей базы данных — сеть живёт в одной базе. Восстанавливайте целиком, а не частично: частичный дамп таблиц сети может сломать целостность.

TimeWeb

Вывод

WordPress Multisite — мощный встроенный режим для сетей сайтов: одна установка, общие плагины и темы, единое обновление и централизованное управление. Он выгоден студиям, мультиязычным проектам и сервисам с множеством сайтов. Включение занимает один константный флаг и пару шагов в панели или WP-CLI, а обслуживание сводится к аккуратным бэкапам общей базы и совместимым плагинам. Если сайтам нужна автономия — отдельные установки. Выбор за вами: гибкая сеть или независимость.

Нужна помощь с настройкой сети WordPress, мультиязычной версией или разработкой сайта? Посмотрите наше портфолио или свяжитесь с нами — настроим Multisite под вашу задачу.

Clearfy

Поделиться:
Telegram ВКонтакте