Wyszukiwanie i zamiana w bazie danych WordPress
WordPress nie przechowuje adresu Państwa witryny w jednym miejscu. Znajduje się on w ustawieniach, ale także dosłownie w treści wpisów, przy obrazkach oraz w ustawieniach motywów, wtyczek i widżetów. Dlatego przy zmianie adresu trzeba go zastąpić w całej bazie danych. Poniżej wyjaśniamy, jak zrobić to bezpiecznie i dlaczego zwykłe polecenie SQL może uszkodzić witrynę.
Kiedy jest to potrzebne?
- Witryna działała na http, a teraz działa na https, i widzą Państwo treści mieszane (strona na https, która ładuje elementy przez http). Zobacz także Brak kłódki lub komunikat „niezabezpieczona”: jak usunąć mixed content.
- Przenoszą Państwo witrynę na inną domenę albo z adresu tymczasowego na właściwą domenę.
- Ręcznie utworzyli Państwo kopię pod innym adresem, na przykład witrynę testową.
Jeśli klonują Państwo witrynę za pomocą Installatron lub Website Manager, adresy w kopii zostaną dostosowane automatycznie. Zobacz Klonowanie i tworzenie środowiska testowego (staging). Jeśli przenoszą Państwo witrynę tylko na inny hosting z tą samą domeną, nic nie trzeba zmieniać.
Dlaczego nie zwykły SQL REPLACE?
W phpMyAdmin można jednym poleceniem SQL zastąpić wszystkie teksty. Nie należy tego robić w przypadku adresów. Wiele ustawień jest zapisanych w postaci serializowanej: PHP dopisuje przy nich długość każdego tekstu. Wygląda to tak:
s:27:"http://example.com/logo.png";
s:27 oznacza: dalej następuje tekst o długości 27 znaków. Jeśli zmienią Państwo adres na https://, tekst będzie miał 28 znaków, ale nadal będzie zapisane 27. PHP nie odczyta wtedy wartości, a ustawienie po cichu przestanie działać. Objawia się to na przykład pustym menu, zniknięciem logo lub widżetów. Dlatego należy użyć narzędzia, które aktualizuje te długości.
Najpierw kopia zapasowa
Wyszukiwanie i zastępowanie działa natychmiast i nie ma kosza. Przed rozpoczęciem prosimy wyeksportować bazę danych, zobacz Eksport bazy danych, lub jednym kliknięciem utworzyć dodatkową kopię zapasową w WebOké Backups, zobacz WebOké Backups: przeglądanie, przywracanie lub pobieranie kopii zapasowej.
Sposób 1: WP-CLI w Terminalu lub przez SSH
WP-CLI to oficjalne narzędzie wiersza poleceń WordPressa. U nas korzystają z niego Państwo jako z polecenia wp w Terminalu DirectAdmin lub przez SSH. Jest ono dostępne tylko w pakietach z SSH. Które to pakiety, dowiedzą się Państwo z artykułu Terminal w przeglądarce.
- Proszę otworzyć Terminal i przejść do katalogu WordPressa:
cd domains/example.com/public_html - Najpierw proszę sprawdzić, co by się zmieniło, bez wprowadzania zmian:
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run
Dla każdej tabeli zobaczą Państwo, ile zamian zostałoby wykonanych. - Jeśli wszystko się zgadza, proszę uruchomić to samo polecenie bez
--dry-run.
Kilka opcji w poleceniu:
- Bez dodatkowej opcji WP-CLI działa na tabelach, które zna WordPress. Jeśli wtyczka używa własnych tabel z tym samym prefiksem (na przykład
wp_), proszę dodać--all-tables-with-prefix. Opcja--all-tablesobejmuje wszystkie tabele w bazie danych, także tabele innej witryny, które przypadkiem się w niej znajdują. --skip-columns=guidpozostawia bez zmian kolumnęguidze stałymi identyfikatorami wpisów. WordPress zaleca, aby nigdy jej nie zmieniać, w przeciwnym razie czytniki kanałów ponownie wyświetlą stare wpisy jako nowe.- Jeśli przy złożonych ustawieniach coś pójdzie nie tak, opcja
--precisedziała wolniej, ale dokładniej.
Sposób 2: wtyczka
Jeśli nie mają Państwo dostępu do Terminalu ani SSH, prosimy użyć wtyczki do wyszukiwania i zastępowania, która obsługuje dane serializowane. Kilka takich wtyczek znajdą Państwo w katalogu wtyczek wordpress.org. Przy wyborze prosimy przeczytać opis: musi w nim być informacja, że wtyczka prawidłowo przetwarza dane serializowane. Również tutaj prosimy najpierw skorzystać z trybu testowego, jeśli wtyczka go oferuje, a po zakończeniu usunąć wtyczkę. Zobacz także Wtyczki WordPress: wybór, ocena i porządkowanie.
http:// lub https://. Jeśli zastąpią Państwo tylko example.com, zmienią się także adresy e-mail, takie jak info@example.com, oraz inne teksty zawierające tę nazwę. Prosimy też zwrócić uwagę na ukośnik na końcu: jeśli zastąpią Państwo https://example.com/ przez https://example.net, adresy zostaną ze sobą sklejone.Tylko adres WordPressa i adres witryny?
Po zmianie nie mogą Państwo wejść do panelu administracyjnego, ponieważ WordPress przekierowuje na niewłaściwy adres? Wtedy proszę najpierw zmienić tylko wiersze siteurl i home w tabeli wp_options (prefiks wp_ może być u Państwa inny). Są to zwykłe teksty, które można zmienić w phpMyAdmin. Jak to zrobić, opisujemy w artykule Otwieranie i używanie phpMyAdmin. Pozostałą część wykonają Państwo następnie za pomocą WP-CLI lub wtyczki.
Na koniec
- Proszę wyczyścić pamięć podręczną wtyczki cache oraz przeglądarki.
- Jeśli strony zwracają błąd 404, proszę raz zapisać ustawienia w Ustawienia > Bezpośrednie odnośniki. Zobacz Moja strona nie działa po przesłaniu lub przeniesieniu.
- Proszę sprawdzić kilka stron, menu, logo i formularz. Za pomocą klawisza F12 prosimy sprawdzić w konsoli, czy nie pojawiają się jeszcze komunikaty o treściach mieszanych.
Dalsza lektura
- wp search-replace na developer.wordpress.org (po angielsku)
- Ręczne przenoszenie WordPressa: pliki, baza danych i wp-config.php
Chcą Państwo dowiedzieć się więcej? Zapraszamy na bezpłatny kurs WordPressa, lekcja 3.2 www, przekierowania i treści mieszane lub lekcja 9.5 Przenoszenie witryny WordPress.
