Przejdź do treści

~/www cat poradnik-o-wordpress-multisite.md

WordPress Multisite — poradnik: sieć stron z jednej instalacji

Poradnik WordPress Multisite: kiedy sieć stron się opłaca, jak ją włączyć krok po kroku, konfiguracja .htaccess i Nginx, własne domeny, WP-CLI i typowe błędy.

CZCzarek Zawolski--aktualizacja=--czas=8 min--dział=WWW i WordPress
Zarządzanie siecią stron WordPress Multisite z jednego panelu administracyjnego
tldr.txt — W skrócie

~ xad tldr poradnik-o-wordpress-multi…

  • WordPress Multisite pozwala prowadzić wiele witryn z jednej instalacji, wspólnych motywów, wtyczek i panelu — przydatne dla sieci oddziałów, agencji i stron wielojęzycznych.
  • Sieć włączasz, dodając define( 'WP_ALLOW_MULTISITE', true ); do wp-config.php, a potem przez Narzędzia → Konfiguracja sieci wybierasz subdomeny lub podkatalogi.
  • Podkatalogów nie wybierzesz na instalacji starszej niż miesiąc, a adres strony nie może używać portu innego niż 80 lub 443.
  • Każda witryna sieci może mieć własną domenę bez wtyczek (od WordPressa 4.5) — wystarczy zmienić jej adres w panelu sieci i skonfigurować DNS oraz SSL.
  • Multisite to wspólny punkt awarii: włamanie, błąd wtyczki czy przeciążenie jednej witryny dotyka całej sieci, więc niezależne projekty lepiej trzymać osobno.
$ tree --spis-tresci

WordPress Multisite to wbudowana funkcja WordPressa, która pozwala prowadzić wiele niezależnych witryn z jednej instalacji: wspólnego rdzenia, wspólnych motywów i wtyczek oraz jednego panelu zarządzania. Zamiast utrzymywać pięć osobnych WordPressów, aktualizujesz jeden, a zmiany obejmują całą sieć. To rozwiązanie dla konkretnych scenariuszy, a nie domyślny sposób prowadzenia kilku stron.

W tym poradniku wyjaśniam, czym jest sieć Multisite, komu się opłaca, a komu zaszkodzi, jakie są wymagania i jak ją włączyć krok po kroku, łącznie z konfiguracją serwera, własnymi domenami dla witryn i obsługą z wiersza poleceń. Opieram się na oficjalnej dokumentacji Multisite.

Czym jest sieć Multisite i jak działa

W zwykłej instalacji WordPress obsługuje jedną witrynę. Multisite zmienia to tak, że na tej samej instalacji powstaje sieć wielu witryn. Każda ma własną treść, ustawienia i adres, ale współdzieli kod, motywy i wtyczki.

Co jest wspólne, a co osobne:

  • Rdzeń WordPressa, motywy i wtyczki instalujesz raz dla całej sieci.
  • Każda witryna ma osobne tabele treści w bazie (np. wp_2_posts, wp_2_options) i własny folder na pliki: wp-content/uploads/sites/2/.
  • Tabele użytkowników (wp_users, wp_usermeta) są wspólne. Jedno konto może mieć różne role na różnych witrynach.
  • Wtyczkę możesz włączyć dla całej sieci (Network Activate) albo zostawić do aktywacji na poszczególnych witrynach. Motyw musi być najpierw udostępniony w sieci.
  • Aktualizacja rdzenia obejmuje jednym ruchem wszystkie witryny.

Ta współdzielona natura jest jednocześnie największą zaletą (jedno miejsce zarządzania) i największym ryzykiem (jeden problem dotyka wszystkich).

Kiedy Multisite się opłaca, a kiedy szkodzi

Multisite dobrze sprawdza się, gdy witryny są podobne i powiązane:

  • Firmy z wieloma oddziałami lub lokalizacjami. Osobna strona dla każdego oddziału, wspólny wygląd i administracja.
  • Strony wielojęzyczne. Każda wersja językowa jako osobna witryna sieci. Przy tłumaczeniach przyda się też tekst o automatycznym tłumaczeniu stron.
  • Agencje prowadzące wiele podobnych witryn klientów na wspólnym motywie.
  • Uczelnie, sieci sklepów, franczyzy. Dziesiątki stron o wspólnej tożsamości.

Kiedy Multisite szkodzi:

  • witryny używają zupełnie różnych wtyczek i motywów,
  • klienci mają mieć pełny dostęp administracyjny do swojej strony (zwykły administrator w sieci nie zainstaluje wtyczki),
  • jedna witryna ma znacznie większy ruch od reszty i potrzebuje osobnego skalowania,
  • spodziewasz się, że witryny będą kiedyś sprzedawane lub przenoszone osobno.

Uwaga: Współdzielona instalacja oznacza wspólny punkt awarii. Włamanie, błąd wtyczki czy przeciążenie jednej witryny mogą położyć całą sieć. Niezależne strony łatwiej i bezpieczniej prowadzić jako osobne instalacje WordPressa.

Grupy użytkowników, którym przyda się WordPress Multisite

Wymagania przed uruchomieniem sieci

Do prowadzenia sieci wystarczy jedno konto hostingowe, ale musi ono udźwignąć łączny ruch i dane wszystkich witryn. Sprawdź:

  • Działające bezpośrednie odnośniki (pretty permalinks). Bez nich sieć nie zadziała poprawnie.
  • Port. Adres WordPressa nie może zawierać portu innego niż :80 lub :443.
  • Adres do subdomen. Instalacji na localhost, na adresie IP ani w podkatalogu domeny (np. domena.pl/wp) nie skonfigurujesz w trybie subdomen.
  • Wsparcie hostingu. Dostawca musi pozwalać na Multisite i edycję wp-config.php oraz .htaccess (Apache, LiteSpeed) lub konfiguracji Nginx. Część hostingów zarządzanych ogranicza Multisite do wyższych pakietów.
  • Zasoby. Wszystkie witryny dzielą tę samą pulę miejsca, pamięci PHP i bazy danych.
  • Kopię zapasową. Zrób pełny backup plików i bazy, bo zmieniasz pliki konfiguracyjne.

Jeśli WordPress ma działać w osobnym katalogu (tzw. „własny katalog”), przenieś go przed włączeniem Multisite, a nie po.

Subdomeny czy podkatalogi — wybór na start

Przy zakładaniu sieci WordPress poprosi o wybór jednej z dwóch struktur:

  • Subdomeny: oddzial.twojadomena.pl. Wyglądają jak niezależne witryny. Jeśli witryny mają powstawać „na żądanie”, potrzebujesz wildcard DNS (*.twojadomena.pl) i certyfikatu wildcard SSL. Przy kilku stałych subdomenach wystarczą pojedyncze rekordy DNS i certyfikaty.
  • Podkatalogi: twojadomena.pl/oddzial. Prostsze w konfiguracji, bez wildcard DNS, wszystkie witryny pod jednym certyfikatem.

Oficjalna dokumentacja wprost zaznacza, że podkatalogów nie wybierzesz, jeśli instalacja działa dłużej niż miesiąc, ze względu na możliwe konflikty z istniejącymi odnośnikami. Wybór jest w praktyce trwały. Zmiana typu sieci później wymaga ręcznej edycji konfiguracji i bazy.

Jak włączyć WordPress Multisite krok po kroku

Proces ma dwie fazy: odblokowanie funkcji w pliku konfiguracyjnym i konfigurację sieci w panelu.

Krok 1: Odblokuj funkcję Multisite

Otwórz wp-config.php w głównym katalogu instalacji i tuż przed linią /* That's all, stop editing! Happy publishing. */ (w starszych wersjach „Happy blogging”) dodaj:

define( 'WP_ALLOW_MULTISITE', true );

Zapisz plik i odśwież panel.

Krok 2: Skonfiguruj sieć

  1. Dezaktywuj wszystkie wtyczki (Wtyczki → zaznacz wszystkie → Wyłącz).
  2. Przejdź do Narzędzia → Konfiguracja sieci (Tools → Network Setup).
  3. Wybierz strukturę: subdomeny lub podkatalogi.
  4. Podaj tytuł sieci i adres e-mail administratora sieci.
  5. Kliknij Zainstaluj.

Krok 3: Dodaj kod do plików konfiguracyjnych

Kreator wyświetli dwa fragmenty kodu dopasowane do Twojej instalacji. Pierwszy wklej do wp-config.php (znów przed linią „stop editing”). Dla sieci w podkatalogach wygląda podobnie do:

define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
define( 'DOMAIN_CURRENT_SITE', 'twojadomena.pl' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

Drugi fragment zastępuje dotychczasowe reguły WordPressa w .htaccess (Apache, LiteSpeed). Dla podkatalogów wygląda tak:

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
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]

Zawsze używaj kodu wygenerowanego przez kreator, bo uwzględnia on Twoją ścieżkę instalacji. Po zapisaniu plików zaloguj się ponownie. W górnym pasku pojawi się menu Moje witryny → Administracja sieci (Network Admin). Teraz możesz z powrotem włączyć wtyczki, najlepiej pojedynczo.

Krok 4: Serwer Nginx

Nginx nie czyta .htaccess, więc reguły trzeba dodać do konfiguracji serwera (na hostingu współdzielonym zrobi to dostawca). Dla sieci w podkatalogach dokumentacja WordPressa podaje m.in. takie reguły w bloku server:

if (!-e $request_filename) {
    rewrite /wp-admin$ $scheme://$host$request_uri/ permanent;
    rewrite ^(/[^/]+)?(/wp-.*) $2 last;
    rewrite ^(/[^/]+)?(/.*\.php) $2 last;
}

Wymagania hostingowe sieci WordPress Multisite

Ustawienia sieci, wtyczki i rola Super Administratora

Multisite wprowadza najwyższą rolę: Super Administrator. Zarządza on całą siecią: dodaje, wyłącza i usuwa witryny, instaluje i udostępnia motywy oraz wtyczki, może oznaczyć witrynę jako spam lub zarchiwizować ją. Zwykły administrator witryny zarządza treścią i użytkownikami swojej strony, ale nie zainstaluje nowych wtyczek ani motywów. To celowe ograniczenie, które chroni całą sieć.

W Administracja sieci → Ustawienia (Network Settings) ustawisz m.in.:

  • rejestrację: czy goście mogą zakładać konta i własne witryny (w sieci firmowej wyłącz),
  • limit miejsca na pliki dla każdej witryny (domyślnie proponowane 100 MB),
  • maksymalny rozmiar przesyłanego pliku (domyślnie 1500 KB; obowiązuje też limit upload_max_filesize z PHP),
  • dozwolone typy plików.

Wtyczki aktywowane dla całej sieci działają na każdej witrynie i administratorzy witryn nie mogą ich wyłączyć. Dobrze nadają się do tego zabezpieczenia, cache i kopie zapasowe. Przed instalacją sprawdź, czy wtyczka deklaruje zgodność z Multisite. Część wtyczek do zabezpieczeń i SEO wymaga osobnej konfiguracji na poziomie sieci. Jeśli zależy Ci na dodatkowym utrudnieniu dostępu do panelu, przeczytaj, czy ukrywanie wp-admin zabezpiecza WordPressa.

Dodawanie witryn i własne domeny

Dodawanie nowej witryny:

  1. Przejdź do Moje witryny → Administracja sieci → Witryny.
  2. Kliknij Dodaj nową witrynę.
  3. Podaj adres (subdomenę lub podkatalog), tytuł, język i e-mail administratora.
  4. Zatwierdź przyciskiem Dodaj witrynę.

Przy subdomenach każda nowa subdomena musi być obsłużona w DNS i objęta certyfikatem SSL. Bez tego witryna pokaże odwiedzającym błąd certyfikatu, mimo że w panelu działa poprawnie.

Od WordPressa 4.5 każda witryna może też dostać zupełnie inną domenę bez dodatkowych wtyczek:

  1. Skieruj domenę w DNS na serwer sieci (rekord A lub CNAME). Jeśli DNS to dla Ciebie nowość, zacznij od tekstu o tym, jak działa serwer DNS.
  2. Dodaj domenę jako alias (parked domain) do głównej domeny w panelu hostingu i wystaw dla niej certyfikat SSL.
  3. W Administracja sieci → Witryny → Edytuj wpisz w polu Adres witryny (URL) pełny adres, np. https://oddzial-krakow.pl, i zapisz.
  4. Jeśli pojawią się problemy z logowaniem, dodaj do wp-config.php pod kodem sieci:
define( 'COOKIE_DOMAIN', $_SERVER['HTTP_HOST'] );

Zarządzanie siecią z WP-CLI

Przy większej liczbie witryn panel staje się wolny w obsłudze. Szybciej zrobisz to z wiersza poleceń przez WP-CLI:

# konwersja istniejącej instalacji na sieć (podkatalogi)
wp core multisite-convert --title="Sieć oddziałów"

# nowa witryna w sieci
wp site create --slug=krakow --title="Oddział Kraków" --email=admin@twojadomena.pl

# lista witryn
wp site list --fields=blog_id,url

# włączenie wtyczki dla całej sieci
wp plugin activate nazwa-wtyczki --network

# polecenie na konkretnej witrynie
wp --url=twojadomena.pl/krakow option get blogname

# zmiana adresów po przeniesieniu sieci na nową domenę
wp search-replace 'https://stara-domena.pl' 'https://nowa-domena.pl' --network

Pamiętaj, że zadania cykliczne (WP-Cron) w sieci działają osobno dla każdej witryny. Przy wielu witrynach lepiej wyłączyć WP-Cron i uruchamiać zadania z systemowego crona, co opisuje tekst WP-Cron vs. Cron.

Najczęstsze problemy z Multisite i rozwiązania

  • Podwitryny zwracają 404, a główna działa. Najczęściej to stare reguły w .htaccess albo brak reguł Nginx. Wklej ponownie kod z Administracja sieci → Ustawienia → Konfiguracja sieci.
  • Pętla przekierowań lub „Cookies are blocked” przy logowaniu. Sprawdź, czy DOMAIN_CURRENT_SITE zgadza się z adresem w bazie (z www lub bez) i czy nie mieszasz http z https. Przy własnych domenach pomaga COOKIE_DOMAIN.
  • Opcja podkatalogów jest niedostępna. Instalacja działa dłużej niż miesiąc. Zostają subdomeny albo świeża instalacja z importem treści.
  • Błąd certyfikatu na podwitrynie. Brakuje wpisu DNS albo certyfikatu dla subdomeny lub zmapowanej domeny.
  • Administrator witryny nie widzi menu Wtyczki. To normalne, bo instalacja wtyczek należy do Super Administratora.

Zanim zdecydujesz się na Multisite

Multisite dokłada złożoności: trudniejsza migracja pojedynczej witryny poza sieć, wspólny punkt awarii i wyższe wymagania hostingowe. Jeśli Twoje witryny są do siebie podobne i chcesz nimi zarządzać centralnie, sieć realnie oszczędza czas. Jeśli to niezależne projekty, wybierz osobne instalacje.

Niezależnie od wyboru zadbaj o kopie zapasowe i środowisko testowe, zanim wdrożysz zmiany na produkcji. Przy diagnozowaniu problemów pomoże tryb debugowania WordPressa.

~ man faq

Najczęściej zadawane pytania

Czym jest WordPress Multisite?

To wbudowana funkcja WordPressa pozwalająca uruchomić sieć wielu witryn na jednej instalacji. Wszystkie dzielą ten sam rdzeń, motywy i wtyczki oraz są zarządzane z jednego panelu sieci przez Super Administratora.

Kiedy warto użyć Multisite, a kiedy nie?

Warto, gdy prowadzisz wiele podobnych, powiązanych witryn (oddziały, wersje językowe, strony klientów agencji na wspólnym szablonie). Nie warto dla kilku zupełnie niezależnych projektów, bo w Multisite awaria lub włamanie dotyka całej sieci.

Subdomeny czy podkatalogi w Multisite?

Subdomeny (strona.twojadomena.pl) wyglądają jak niezależne witryny i zwykle wymagają wildcard DNS oraz certyfikatu wildcard SSL. Podkatalogi (twojadomena.pl/strona) są prostsze, ale niedostępne na instalacji działającej dłużej niż miesiąc. Wybór robisz raz przy zakładaniu sieci.

Czy każda witryna w Multisite może mieć własną domenę?

Tak. Od WordPressa 4.5 mapowanie domen jest wbudowane: w Administracji sieci → Witryny → Edytuj zmieniasz adres witryny na własną domenę, kierujesz domenę w DNS na serwer sieci i wystawiasz dla niej certyfikat SSL.

Czy w Multisite każda strona ma własne pliki?

Witryny dzielą instalację i przestrzeń dyskową, ale mają osobne foldery na przesłane pliki (wp-content/uploads/sites/ID) i osobne tabele treści w bazie. Użytkownicy, motywy i wtyczki są wspólne dla całej sieci.

Jak przenieść jedną witrynę z Multisite do osobnej instalacji?

Najprościej przez eksport treści (Narzędzia → Eksport) i import do nowego WordPressa, a potem skopiowanie folderu uploads/sites/ID. Przy dużych witrynach używa się wtyczek migracyjnych obsługujących Multisite albo ręcznej migracji tabel bazy.

Ten artykuł jest częścią tematu

CZ

$ whoami

Czarek Zawolski

Założyciel i redaktor XAD.pl. Pisze o sieciach, bezpieczeństwie IT, administracji systemami Windows i Linux oraz o sprzęcie, który sprawia ludziom problemy na co dzień.

~ ls ../podobne