WordPress Multisite дозволяє керувати сотнями сайтів з однієї інсталяції WordPress. Усі сайти використовують одну кодову базу, але мають незалежні дані, теми та плагіни.
Коли використовувати Multisite
- Мережа регіональних сайтів компанії
- Багатомовний сайт (окремий підсайт для кожної мови)
- Освітня платформа з сайтами для кожного курсу
- Мережа блогів або медіапортал
Активація Multisite
1. Додати у wp-config.php (до рядка «That's all, stop editing!»)
define('WP_ALLOW_MULTISITE', true);
2. Налаштувати мережу
Перейдіть Tools → Network Setup. Виберіть тип: піддомени (site1.example.com) або підкаталоги (example.com/site1/).
*.example.com → IP.3. Додати у wp-config.php
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true); // false для підкаталогів
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
4. Оновити .htaccess
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
Керування мережею
| Дія | Де |
|---|---|
| Створити підсайт | My Sites → Network Admin → Sites → Add New |
| Активувати плагін для всієї мережі | Plugins → Network Activate |
| Встановити тему для всієї мережі | Themes → Network Enable |
| Квота дискового простору | Network Settings → Upload Settings |
Часті помилки Multisite
| Повідомлення | Що означає |
|---|---|
| Fatal error: database error Table wp_2_options doesn't exist | Підсайт створено, але для нового ID не були створені таблиці — зазвичай через перерваний процес створення сайту |
| ERR_TOO_MANY_REDIRECTS на піддомені | Не налаштовано wildcard DNS-запис, або DOMAIN_CURRENT_SITE вказано неправильно у wp-config.php |
| «Are you sure you want to do this?» при звичайних діях | Застарів nonce через розбіжність часу між підсайтом і мережею, або кеш-плагін віддає стару форму |
| «This resource is protected» у /wp-admin/network/ | Вхід виконано під звичайним адміністратором підсайту, а не під суперадміном мережі |
Multisite проти окремих інсталяцій WordPress
| Критерій | Multisite | Окремі інсталяції |
|---|---|---|
| Спільний код і плагіни | Один набір на всю мережу | У кожного сайту свій набір |
| Ізоляція при зломі | Слабка — вразливість одного сайту загрожує всій мережі | Повна, сайти не пов'язані |
| Ресурси бази даних | Одна база, окремі таблиці на сайт | Окрема база на кожен сайт |
| Складність бекапу одного сайту | Вища — потрібно вивантажувати таблиці конкретного ID | Нижча — стандартний дамп бази |
Коли Multisite не підходить
- Сайтам мережі потрібні різні версії PHP або несумісні між собою плагіни
- Один із сайтів очікує вибухове зростання трафіку і має масштабуватися окремо від інших
- Потрібна повна ізоляція на випадок зламу одного із сайтів
- Клієнтам потрібен власний повноцінний адміністративний акаунт без прав суперадміна мережі
Перевірка результату
Переконайтеся через WP-CLI, що мережа дійсно активна і підсайт зареєстрований:
wp core is-installed --network
wp site list --fields=blog_id,url,status
Якщо команда wp site list не показує новий підсайт, перевірте, що крок створення сайту в Адмін мережі завершився без помилок БД. Подальші кроки з перенесення такої мережі на новий сервер описані в статті міграція WordPress на VDS, а щодо резервного копіювання — у налаштуванні бекапів WordPress.
Домени для підсайтів: піддомени, підкаталоги чи власні домени
Окрім вибору між піддоменами і підкаталогами під час активації мережі, Multisite підтримує і третій варіант — підключення повністю самостійних доменів до окремих підсайтів через плагін WordPress MU Domain Mapping або вбудований механізм доменного мапінгу в сучасних версіях ядра. Це зручно для мережі сайтів різних брендів, у яких немає нічого спільного, крім адмінки.
Для доменного мапінгу кожен прив'язаний домен має вказувати A-записом на той самий сервер, де живе основна інсталяція, а SSL-сертифікат має покривати всі прив'язані імена — або окремим сертифікатом на кожен домен, або через автоматичний випуск Let's Encrypt для кожного доданого імені.
Резервне копіювання мережі цілком
Стандартні плагіни бекапу WordPress за замовчуванням часто налаштовані на одну інсталяцію і під час роботи в режимі мережі вивантажують або лише головний сайт, або всю базу без поділу за підсайтами. Перед впровадженням Multisite у продакшн перевірте, що обране рішення для бекапу явно підтримує мережевий режим і дозволяє відновити як усю мережу, так і окремий підсайт без втрати даних інших.