Envato Elements - pobierasz co chcesz, ile chcesz

Kiedyś opcji wielu stron w  ramach jednej instalacji WordPressa (WordPress MU – Multi User) raczej unikałem – był to oddzielny projekt, często aktualizowany/rozwijany z opóźnieniem względem głównej gałęzi, a i nie wszystkie wtyczki sobie radziły prawidłowo z nim…

Zmieniło się to jakiś czas temu, przy okazji premiery WordPressa z numerkiem 3 – wtedy obsługa wielu stron w ramach jednej instalacji WordPressa trafiła do głównego projektu. Przy okazji zmieniając nazwę na WordPress Multisite.

I o tym dziś będzie…

WordPress Multisite w praktyce

Obecnie opcja „sieci stron” (multisite) jest częścią WordPressa, i choć jest domyślnie wyłączona – to w kilku prostych krokach można ją aktywować na naszej stronie.

Ale co to jest ten cały Multisite?

Ogólnie i w pewnym uproszczeniu aktywacja opcji Multisite w WordPressie pozwala nam postawić kilak stron korzystając z jednej instalacji WordPressa, i z jednej bazy danych.

Można dzięki temu obejść ograniczenia nakładane przez niektóre hostingi (nie polecam takich hostingów ;-)) co do ilości baz danych… Można też postawić kilka stron tematycznych w ramach jednej sieci – korzystając z faktu, że mimo iż jest to jeden WordPress i jedna baza danych, to każda strona w ramach sieci może mieć inny wygląd, korzystać z innych wtyczek i oczywiście posiadać różną treść… ;-)

Wprawdzie da się zmusić tak skonfigurowanego WordPressa (a konkretnie to i serwer) do tego, by każda strona naszej sieci działała pod inną domeną, to w tym poradniku skupię się na 2 klasycznych typach adresowania kolejnych stron:

  • Subdomena (witryna1.domena, witryna2.domena)
  • Podkatalog (domena/witryna1, domena/witryna2)

Dla 2 chyba najpopularniejszych webserwerów, czyli:

Aktywacja opcji WordPress Multisite

Ale zanim przejdziemy do konfiguracji poszczególnych opcji, najpierw musimy aktywować obsługę „sieci stron” w naszym WordPressie. W tym celu edytujemy plik „wp-config.php” i prawie na samym końcu, tuż przed:

if ( !defined(‚ABSPATH’) )

dodajemy:

define('WP_ALLOW_MULTISITE', true);

Po ponownym zalogowaniu się do panelu zarządzania WordPressem przechodzimy kolejno:

  • WP-Admin: Narzędzia > Uruchamianie sieci

Gdzie musimy m.in. zdecydować o tym czy kolejne strony będą w subdomenach, czy podkatalogach:

Proszę zadecydować, czy witryny tej sieci mają mieć adresy w postaci subdomen czy podkatalogów. To ustawienie nie może zostać później zmienione.

W celu używania funkcjonalności wirtualnych hostów, konieczne jest posiadanie rekordu DNS z wieloznacznikiem.

  • Subdomeny – przykłady: witryna1.[DOMENA] i witryna2.[DOMENA]
  • Podkatalogi – przykłady: [DOMENA]/witryna1 i [DOMENA]/witryna2

Zacznę od wariantu z podkatalogami, bo mimo trochę trudniejszej konfiguracji (dotyczy serwera opartego o Nginx [LINK], bo dla Apache2 jest to właściwie bez różnicy) sam najczęściej wybieram ten wariant ;-)

WordPress Multisite i podkatalogi

Jest to wariant w którym każda kolejna strona naszej sieci będzie miała swój własny adres na zasadzie podkatalogu głównej domeny, czyli:

  • [DOMENA]/witryna1
  • [DOMENA]/witryna2

WordPress Multisite: podkatalogi i Apache2

W przypadku webserwera Apache2 niezbędna będzie obsługa mod_rewrite, który prawdopodobnie jest na Waszym serwerze aktywny – jeśli nie, to pomoże polecenie:

sudo a2enmod rewrite

Lub kontakt z administratorem serwera ;-)

W przypadku aktywacji WordPress Multisite na webserwerze opartym na Apache2 jest o tyle łatwiej, że wszystkie niezbędne czynności jak i wymagany kod zostanie Wam podany przez WordPressa, ale na wszelki wypadek również to opisze.

Po aktywacji WordPress Multisite w panelu (wp-admin) przechodzimy ponownie do edycji pliku „wp-config.php” i tuż nad linijką:

/* To wszystko, zakończ edycję w tym miejscu! Miłego blogowania! */

dodajemy kod podany przez WordPressa, np.:

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', '[DOMENA]');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

Edytujemy też  plik .htaccess i zmieniamy w nim „standardowy WordPressowy kod” na coś w tym stylu:

RewriteEngine On
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]

I to tyle… ;-)

WordPress Multisite: podkatalogi i Nginx

Tutaj czeka nas wprawdzie trochę więcej zabawy, ale nie będzie to dużo trudniejsze niż powyżej ;-)

Nginx Map i Nginx Helper

Wprawdzie można wygenerować samemu plik mapy na zasadzie:

/adres-witryny/ ID_witryny;
/witryna1/    2;
/witryna2/    3;

To – zwłaszcza przy większych sieciach, czy tych bardziej „dynamicznych” – można sobie ułatwić zadanie instalując (i aktywując ;-)) wtyczkę Nginx Helper, która po małej konfiguracji zrobi wszystko za Was.

W tym celu przechodzimy do ustawień wtyczki:

  • WP-Admin: Ustawienia > Nginx Helper

i w zakładce „General” zaznaczamy „Enable Nginx Map”, w tym momencie wyświetli się nam link do pliku map.conf:

/ścieżka/do/naszego/wordpressa/wp-content/uploads/nginx-helper/map.conf

który kopiujemy „na później”.

Nginx i konfiguracja vHosta

Teraz możemy przejść do pliku w którym znajduje się konfiguracja naszej strony (domeny/vHosta), czyli coś w stylu:

sudo nano /etc/nginx/sites-enabled/[DOMENA/nazwa pliku]

I dodajemy na samej górze, przed „server {„:

# ----- WordPress Multisite part 1 -----
map $uri $wpmsname{
~^(?/[^/]+/)files/(.*) $wpmspath;
}
map $wpmsname $wpmsid{
default -999;
include /ścieżka/do/pliku/map.conf;
}
# ----- /WordPress Multisite part 1 -----

Oraz w dalszej części, zamiast:

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

Wpisujemy:

# ----- WordPress Multisite part 2 -----
location ~ ^(/[^/]+/)?files/(?.+) {
try_files /wp-content/blogs.dir/$wpmsid/files/$rt_file /wp-includes/ms-files.php?file=$rt_file;
}
location / {
if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; }
if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; }
if (!-f $request_filename){ rewrite (.*) /index.php;}
}
rewrite /files/$ /index.php last;
if ($uri !~ wp-content/plugins) { rewrite /files/(.+)$ /wp-includes/ms-files.php?file=$1 last; }
if (!-e $request_filename) {
rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
rewrite ^/[_0-9a-zA-Z-]+.(/wp-admin/.\.php)$ $1 last;
rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
}
# ----- /WordPress Multisite part 2 -----

Zapisujemy zmiany, szybki test konfiguracji i restart serwera:

sudo /etc/init.d/nginx configtest
sudo /etc/init.d/nginx reload

Jeśli wszystko poszło OK, WordPress Multisite powinien już działać…

WordPress Multisite i subdomeny

Jest to wariant w którym każda kolejna strona naszej sieci będzie miała swój własny adres na zasadzie subdomeny, czyli:

  • witryna1.[DOMENA]
  • witryna2.[DOMENA]

WordPress Multisite: subdomeny i Apache2

W przypadku webserwera Apache2 niezbędna będzie obsługa mod_rewrite, który prawdopodobnie jest na Waszym serwerze aktywny – jeśli nie, to pomoże polecenie:

sudo a2enmod rewrite

Lub kontakt z administratorem serwera ;-)

W przypadku aktywacji WordPress Multisite na webserwerze opartym na Apache2 jest o tyle łatwiej, że wszystkie niezbędne czynności jak i wymagany kod zostanie Wam podany przez WordPressa, ale na wszelki wypadek również to opisze.

Po aktywacji WordPress Multisite w panelu (wp-admin) przechodzimy ponownie do edycji pliku „wp-config.php” i tuż nad linijką:

/* To wszystko, zakończ edycję w tym miejscu! Miłego blogowania! */

dodajemy kod podany przez WordPressa, np.:

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', '[DOMENA]');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

Edytujemy też plik .htaccess i zmieniamy w nim „standardowy WordPressowy kod” na coś w tym stylu:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L] # add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L] RewriteRule ^(wp-(content|admin|includes).*) $1 [L] RewriteRule ^(.*\.php)$ $1 [L] RewriteRule . index.php [L]

Dodatkowo – jeśli nie ustawiliście tak wcześniej – musimy przejść do edycji pliku w którym znajduje się konfiguracja naszej strony (domeny/vHosta), np.:

sudo nano /etc/apache2/sites-enabled/[DOMENA/nazwa pliku]

i zaraz pod wpisem określającym domenę dla serwera dodajemy:

ServerAlias *.[DOMENA]

I tyle, choć trzeba jeszcze zrestartować serwer Apache2:

sudo service apache2 restart

WordPress Multisite: subdomeny i Nginx

Tu mam dla Was chyba dobrą wiadomość – tym razem będzie mniej „roboty” niż w przypadku subdomen i Apache2.

Zaczynamy – i w sumie na tym też kończymy – od edycji pliku w którym znajduje się konfiguracja naszej strony (domeny/vHosta), czyli coś w stylu:

sudo nano /etc/nginx/sites-enabled/[DOMENA/nazwa pliku]

i w sekcji „server” dodajmy/modyfikujemy linijkę:

server_name [DOMENA] *.[DOMENA];

Konkretnie chodzi o „*.[DOMENA]”.

Od razu zalecam, by zaraz poniżej dodać jeszcze jedną linijkę:

server_name_in_redirect off;

Zapisujemy zmiany, szybki test konfiguracji i restart serwera:

sudo /etc/init.d/nginx configtest
sudo /etc/init.d/nginx reload

I to tyle… :-)

Ustawienia w DNSach

Oczywiście jest jeszcze jasna ważna rzecz, bez której subdomeny nie zadziałają – czyli odpowiednie ustawienie wpisów w DNSach dla domeny.

Wprawdzie można bawić się w ręczne dodawanie rekordu A dla każdej subdomeny, to ja zalecam skorzystać z „wildcarda” dla rekordu A:

A *.[nazwadomeny] IP_SERWERA

Zarządzanie stronami w ramach WordPress Multisite

Samo zarządzanie stronami w ramach sieci jest proste, choć może wymagać chwili by się przestawić do tego, że wszystkie wtyczki i motywy instalujemy i ustawiamy na aktywne w ramach konta nadrzędnego, bez tego nie będą dostępne dla poszczególnych stron.

  • WP-Admin: Moje witryny > Administracja siecią: Motywy
  • WP-Admin: Moje witryny > Administracja siecią: Wtyczki

Zarządzanie stronami w ramach sieci odbywa się z menu:

  • WP-Admin: Moje witryny > Administracja siecią: Witryny

PS. W przykładach został użyty „zwrot”: [DOMENA] – pamiętajcie by zamienić go na nazwę Waszej domeny… :-)

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Monika ćwiczy przed kongresem ko..., ale dzięki motywowa Divi od Elegant Themes chyba nawet ona da radę...
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera!