Korzystałeś kiedyś z wp-cli? To narzędzie jest jak szwajcarski scyzoryk dla każdego administratora WordPress. Przykładowo, jeżeli potrzebujesz zmienić w bazie danych twojej strony opartej o WordPress jakiś ciąg znaków – dajmy na to adres (URL) witryny – co robisz? Masz kilka możliwości. Postaram Cię namówić na wykorzystanie w tym celu wp-cli i opisać dokładnie jak to wykonać – na prawdziwym przykładzie z wczoraj. Ale najpierw… dwie metody, których nie używam :).

Jak NIE podmieniać ciągów znaków w bazach danych

Będąc młodą naiwną lekarką… a nie czekaj… miało być „młodym niedoświadczonym twórcą stron”. Wtedy po prostu robiłem dump bazy danych, w Notepad++ wykonywałem „wyszukaj i zamień” i wrzucałem bazę z powrotem na serwer. Parę razy nawet się udało. Niestety – kolejne wersje Drupal i WordPress wprowadziły serializację danych w polach tekstowych. Nie wchodząc w szczegóły oznaczało to, że nie wystarczyło już podmieniać ciągów znaków. Należało jeszcze poprawić liczbę znaków poprawianego pola, przechowywaną zwykle gdzieś obok. Notepad++ poszedł w odstawkę.

Jak podmieniać ciągi znaków kiedy nie mamy dostępu do SSH

Przez kolejne lata (w czasach kiedy mało kto słyszał o SSH i WP-CLI) używałem skryptu Search and replace DB, który (zazwyczaj) poprawnie obsługiwał serializację danych dla WordPress czy Drupal. Nadal nim się posługuję, jeśli nie mam dostępu do wiersza poleceń.

Dlaczego używam WP-CLI

Kiedy poznałem WP-CLI i SSH to cała moja miłość do Search and replace DB minęła. Jeśli tylko mogę podmieniam adresy (i nie tylko) w bazie WordPress za pomocą tego narzędzia. Dlaczego? Jest to rozwiązanie któremu bardziej ufam. Wp-cli jest rozwijany przez twórców WordPress. Nie wymaga podawania poświadczeń do bazy danych – potrafi je „wyczytać” z plików konfiguracyjnych. Nie zgłasza też ostrzeżeń i błędów związanych z serializacją – np. przy wtyczkach takich jak Yoast – tak jak robi to wspomniany Search and Replace DB (Inna sprawa, czy to oznacza, że poprawnie dokonuje konwersji czy tylko milczy o problemach – do sprawdzenia :)).

Jak użyć WP-CLI do zmiany adresu (URL) strony opartej o WordPress

Po pierwsze Przejdź do katalogu głównego WordPress a którego URL chcesz zmienić. Powinieneś być w tym katalogu w którym widać plik wp-config.php.

Przykładowo – jeśli po zalogowaniu do swojego konta jesteś w katalogu domowym (oznaczanym w linuksie znakiem tyldy, czyli ~) a wp-config.php jest w katalogu ~/domains/mojastrona.pl/public_html wydajesz komendę:

cd domains/domains/mojastrona.pl/public_html 

(składnia cd ~/domains/domains/mojastrona też będzie poprawna – co więcej zapewni nam przejście do właściwego katalogu nawet jeśli nie jesteśmy w folderze domowym.)

Następnie wyświetlamy zawartość katalogu – na przykład z pomocą komendy ls -l

(Na screenie jest to komenda ll, ale tylko dlatego, że na większości hostingów jest to popularny alias do komendy ls -l)

Możemy naocznie przekonać się, czy jesteś we właściwym folderze:

Po drugie Wykonaj kopię zapasową bazy danych za pomocą

wp db eksport

Utworzy się plik z nazwą bazy danych, bieżącą datą i końcówką .sql. Jeśli zobaczysz jakiś błąd to może oznaczać problemy z wykonaniem reszty tego poradnika – napisz w komentarzach jaki błąd dostajesz.

Nie zapomnij przenieść tego pliku gdzieś poza katalog dostępny z Internetu. Jako, że w głównym katalogu nie powinno być plików sql możesz wpisać:

mv *.sql ../

Co przeniesie wszystkie pliki kończące się na .sql o katalog wyżej. Na zrzucie ekranu przenoszę jeden konkretny plik.

Po trzecie Wykorzystaj komendę wp search-replace z odpowiednimi parametrami. Służy ona do podmiany ciągów znaków w bazie danych.

Pierwsze wykonanie tej komendy proponuję zrobić z dopiskiem dry-run. Dzięki temu żadne dane w bazie nie zostaną zmienione ale zobaczysz tabelę która prezentuje ilość zmian w poszczególnych tabelach i kolumnach jaka zostanie wykonana.

Poniższy przykład zaadoptuj do swojej sytuacji – dużo innych znajdziesz na oficjalnej stronie tej komendy.

wp search-replace 'mojastrona.pl' 'test.mojastrona.pl' --dry-run

Powyższe polecenie wyszuka ciągi znaków zawierające mojastrona.pl i pokaże liczbę potencjalnych zamian w poszczególnych tabelach i kolumnach twojej strony.

Jeśli nie widzisz nic niepokojącego to pora na uruchomienie tej komendy bez dopisku dry-run.

Jeśli niepokoją cię (a powinny) zmiany w jakiejś kolumnie, na przykład user_email w tabeli wp_users:

to po pierwsze gratuluję dobrego oka i nie przyjmowania wszystkich tutoriali bezrefleksyjnie, po drugie możesz ominąć tę tabelę czy kolumnę korzystając ze składni:

wp search-replace 'mojastrona.pl' 'test.mojastrona.pl' --skip-tables=wp_users 

albo

wp search-replace 'mojastrona.pl' 'test.mojastrona.pl' --skip-columns=user_email

Jeśli potrzebujesz ominąć więcej niż jedną tabele lub kolumnę – podajesz je po przecinkach.

Po wykonaniu zmian w bazie powinien pojawić się komunikat podobny do poniższego:

Pozostaje sprawdzić, czy strona działa pod nowym adresem. Powinna – o ile wykonałeś też całą resztę roboty (głównie konfigurację hostingu i wpisy w DNS).

Jeśli wszystko działa – brawo Ty!

Biuletyn elimu

Wysyłany raz w miesiącu

Nie spamujemy! Zajrzyj do polityki prywatności po więcej informacji