Налаштування WordPress Multisite для мережі сайтів

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування WordPress Multisite для мережі сайтів
Середня
~3-5 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Настройка WordPress Multisite для мережі сайтів

WordPress Multisite (WPMS) дозволяє керувати кількома сайтами з однієї установки WordPress з єдиною БД, спільним кодом і централізованим управлінням плагінами/темами. Це не "кілька сайтів на одному сервері" — це один WordPress з розділяємою інфраструктурою. Підходить для мереж ЗМІ, мультирегіональних проектів, SaaS-платформ на WordPress, освітніх порталів. Настройка базової мережі займає 1–2 дні; настройка під production з ізоляцією даних і користувацькими плагінами — від 5 днів.

Включення Multisite

Multisite активується додаванням константи в wp-config.php до установки:

define('WP_ALLOW_MULTISITE', true);

Після переходу в Інструменти → Настройка мережі вибирається тип адресації:

  • Поддомени (site1.example.com, site2.example.com) — потребує wildcard DNS та SSL
  • Підпапки (example.com/site1, example.com/site2) — простіша настройка

WordPress генерує код для wp-config.php і .htaccess (або nginx.conf). Приклад для nginx з поддоменами:

server {
    listen 443 ssl;
    server_name *.example.com example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    root /var/www/html;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Wildcard SSL для *.example.com — через Let's Encrypt з DNS-01 challenge:

certbot certonly --manual --preferred-challenges dns \
  -d example.com -d '*.example.com'

Структура таблиць у БД

Multisite створює таблиці з префіксом для кожного підсайту. Головний сайт використовує wp_posts, другий — wp_2_posts, третій — wp_3_posts:

wp_blogs         -- реєстр сайтів мережі
wp_sitemeta      -- мета-дані всієї мережі
wp_users         -- спільні користувачі (один реєстр)
wp_usermeta      -- ролі зберігаються per-site

-- Таблиці першого сайту
wp_posts, wp_postmeta, wp_options...

-- Таблиці другого сайту
wp_2_posts, wp_2_postmeta, wp_2_options...

Користувачі спільні, але ролі — різні для кожного підсайту. Користувач може бути редактором на site2 і підписчиком на site3.

Програмне створення підсайтів

$blog_id = wpmu_create_blog(
    'newsite.example.com',
    '/',
    'Новий сайт',
    get_current_user_id(),
    ['public' => 1],
    1
);

if (is_wp_error($blog_id)) {
    error_log('Ошибка создания сайта: ' . $blog_id->get_error_message());
    return;
}

switch_to_blog($blog_id);
update_option('blogdescription', 'Опис нового сайту');
restore_current_blog();

Користувацький домен для підсайту

Domain mapping — привязка стороннього домену (client-site.ru) до підсайту Multisite. Нативно з WordPress 4.5+:

// У wp-config.php
define('COOKIE_DOMAIN', '');

// Через WP CLI
wp --url=site2.example.com option update siteurl 'https://client-site.ru'
wp --url=site2.example.com option update home 'https://client-site.ru'

Додайте в nginx:

server {
    listen 443 ssl;
    server_name client-site.ru www.client-site.ru;
    root /var/www/html;
    # ті ж location блоки як для головного сервера
}

Мережеві плагіни і теми

Плагін, активований на рівні мережі, працює на всіх підсайтах. Плагін, активований на конкретному підсайті, працює лише там.

if (is_multisite()) {
    $network_sites = get_sites(['number' => 100]);
    foreach ($network_sites as $site) {
        switch_to_blog($site->blog_id);
        // операція для кожного сайту
        restore_current_blog();
    }
}

Розграничення контенту між підсайтами

Медіафайли за замовчуванням ізольовані по підсайту: wp-content/uploads/sites/2/, wp-content/uploads/sites/3/. Це правильно з точки зору безпеки, але ускладнює шаринг ресурсів.

Для спільної медиабібліотеки — плагін "Network Media Library" або користувацьке рішення.

Масштабування і обмеження

Multisite добре працює до 50–100 активних підсайтів на одному сервері. При більшій кількості починається деградація через таблицю wp_options кожного підсайту. Ознаки проблем: повільний switch_to_blog, довгий ответ на /wp-json/.

Рішення: Redis Object Cache з правильною сегрегацією ключів по blog_id, горизонтальне масштабування через Varnish, рознос БД підсайтів на різні сервери (через HyperDB).

Типові строки: базова настройка мережі з 3–5 підсайтів — 2–3 дні. Настройка з domain mapping, SSL, мережевими плагінами і користувацьким реєстратором підсайтів — 5–8 днів.