Pracując już dłużej z WordPress’em dostałem zadanie zainstalowania całego serwisu na nowym serwerze. Serwis korzystał ze starej wersji (2.8 bodajże) oraz wtyczki MU (Multi Site, do tej wersji jako plugin), a celem była nowa wersja 3.0.0 która już MU obsłygiwała wewnętrznie. W skutek różnych niuansów w trakcie rozmowy zainstalowałem całość pod strukturę ścieżkową (path install), przez co dostęp do podstron serwisu odbywał się przez dopisanie ścieżki (www.domena.pl/strona/). Jak się okazało – nie o to chodziło. I takim sposobem zostałem postawiony przed zadaniem przemianowania istniejącej instalacji WordPress na strukturę subdomenową (strona.domena.pl).
Wszystko fajnie i tak dalej – ale jak to zrobić?
Wewnętrzne mechanizmy WordPress’a nie udostępniają potrzebnej funkcjonalności – przewidziano tylko, że jak zdecydujemy się na instalacje sieciową (MU) to wybór struktury podstron jest ostateczny i co najwyżej możemy wszystko zainstalować jeszcze raz. Taki stan rzeczy był dla mnie nie do zaakceptowania. Więc zacząłem grzebać w plikach i w bazie danych.
Pierwsza rzecz jaka się rzuciła w oczy to wpisy w wp-config.php, które powstają po instalacji.
-
$base = ‘/’;
Jak widać wszystko sugeruje, że mamy do czynienia z instalacją ścieżkową. Trzeba poprawić ten fakt.
-
$base = ‘/’;
W praktyce to wszystko co trzeba pozmieniać w plikach na serwerze. Teraz troszkę trudniejsze zadanie - baza danych.
Na początek do zmian zachęca tabelka pod wiele mówiącą nazwą “wp_blogs” (oczywiście prefix może być inny, ale wiadomo o co chodzi). Są tam wpisy nt. wszystkich aktualnych podstron. Posiada dwa nas interesujące pola – domain i path. Przy instalacji ścieżkowej (path install) pole domain zawiera zwykle domenę główną bez niczego (np. “domena.pl”), a path ścieżkę do strony (np. “/strona/”).
domain = domena.pl path = /strona/
Należy odpowiednio to zamienić miejscami.
domain = strona.domena.pl path = /
Dalej trzeba się zainteresować samymi podstronami. Każda ma minimalny układ tabel w postaci “prefix_ID_tabela”. Dla każdej strony należy zajrzeć do tabeli “options” (np. “wp_2_options”) i tam znaleźć dwa wpisy posiadających w polach option_name wartości “home” i “siteurl”. W nich trzeba dokonać odpowiedniej zamiany z “domena.pl/strona/” na “strona.domena.pl”. Dany zabieg trzeba powtórzyć dla każdej tabeli options każdej z podstron.
Ostatnia rzeczą jaką trzeba wykonać, to zaktualizować posty. W tabeli “posts” (np. wp_2_posts) każda wiadomość ma swój tzw. guid, który między innymi zawiera ścieżkę do danego postu. Należy je zaktualizować, aczkolwiek z uwagi na fakt, że to jest czasochłonne (zwłaszcza przy większej liczbie postów) to można się tu wyręczyć dobrodziejstwami języka SQL i użyć następującego zapytania.
-
UPDATE prefix_ID_posts SET guid = REPLACE(guid,‘domena.pl/strona/’,‘strona.domena.pl/’);
Dzięki czemu zaoszczędzimy sobie sporo pracy. Praktycznie to wszystko co trzeba wykonać, żeby instalacja działa poprawnie na nowej strukturze.