Aktualizacje jednym poleceniem, reset hasła, ratowanie strony bez kokpitu i search-replace, który nie psuje bazy. Przewodnik po WP-CLI z gotową ściągą 15 poleceń.
WP-CLI to oficjalne narzędzie do obsługi WordPressa z linii poleceń. Zamiast klikać w kokpicie, wpisujesz jedno polecenie w terminalu: aktualizacja wszystkich wtyczek, reset hasła administratora, podmiana adresów w bazie po migracji, eksport bazy - każda z tych operacji to jedna linijka. Na dużych stronach i przy pracy z wieloma witrynami różnica w czasie jest kolosalna, a część rzeczy (jak poprawna podmiana adresów w danych serializowanych) w ogóle nie ma dobrego odpowiednika w kokpicie.
Ten przewodnik przechodzi od pierwszego połączenia po zestaw poleceń, które realnie wykorzystasz: diagnostykę, aktualizacje, naprawę po awarii i migracje. Wszystkie przykłady działają na naszym hostingu - WP-CLI jest zainstalowane globalnie na każdym koncie.
WP-CLI uruchamia się na serwerze, więc potrzebujesz dostępu SSH. Na naszych serwerach logowanie odbywa się wyłącznie kluczem (bez hasła) - klucz publiczny dodajesz w Panelu Klienta, w zarządzaniu usługą hostingową, a instrukcję połączenia krok po kroku znajdziesz w centrum pomocy.
Po zalogowaniu przejdź do katalogu strony i sprawdź, czy narzędzie widzi Twoją instalację:
cd domains/twojadomena.pl/public_htmlwp core version
Jeśli w odpowiedzi dostajesz numer wersji WordPressa - działa. Wszystkie polecenia WP-CLI wykonuje się z katalogu, w którym leży strona (tam, gdzie plik wp-config.php), albo z przełącznikiem --path=/sciezka/do/strony.
Zanim cokolwiek zmienisz, warto wiedzieć, co masz. Te cztery polecenia dają szybki przegląd stanu instalacji:
| Polecenie | Co pokazuje |
|---|---|
wp core verify-checksums | czy pliki WordPressa są zgodne z oryginałem - zmodyfikowane pliki rdzenia to klasyczny ślad włamania |
wp plugin list | wszystkie wtyczki z wersją, statusem i informacją o dostępnej aktualizacji |
wp theme list | to samo dla motywów - martwe, nieaktualizowane motywy to częsta furtka ataku |
wp user list --role=administrator | kto ma konto administratora - obce konto na tej liście to alarm |
Polecenie wp core verify-checksums zasługuje na osobne zdanie: porównuje sumy kontrolne wszystkich plików rdzenia z oficjalnym wydaniem. Przy sprzątaniu po infekcji to pierwsza rzecz, jaką uruchamiamy - w połączeniu z krokami z poradnika o usuwaniu wirusa z WordPressa pozwala szybko oddzielić pliki zdrowe od podmienionych.
Najczęstszy powód, dla którego strony są włamywane, to zaległe aktualizacje. Z WP-CLI cały proces wygląda tak:
wp db export kopia-przed-aktualizacja.sqlwp plugin update --allwp theme update --allwp core update
Pierwsza linijka robi zrzut bazy - jeśli coś pójdzie nie tak, wracasz jednym poleceniem wp db import. Dobre nawyki przy aktualizacjach (kolejność, testy, co sprawdzić po) opisaliśmy szerzej w tekście o bezpiecznej aktualizacji WordPressa - WP-CLI nie zmienia zasad, tylko skraca wykonanie z kwadransa do minuty.
Przydatny wariant dla ostrożnych: wp plugin update --all --dry-run pokaże, co zostałoby zaktualizowane, bez wykonywania zmian.
Największa siła WP-CLI ujawnia się wtedy, gdy do kokpitu nie da się wejść - po błędzie krytycznym, po utracie hasła, po ataku. Kilka scenariuszy z naszej praktyki:
Utracone hasło administratora (a mail z resetem nie dochodzi):
wp user update admin --user_pass=NoweBardzoMocneHaslo
Biały ekran po aktualizacji wtyczki - wyłączasz winowajcę bez dostępu do kokpitu:
wp plugin deactivate nazwa-wtyczki
A jeśli nie wiesz, która wtyczka położyła stronę, wyłącz wszystkie i włączaj po jednej: wp plugin deactivate --all. Ten sam mechanizm opisujemy od strony objawów w poradniku o białym ekranie WordPressa.
Strona przełączona na obcy motyw po włamaniu:
wp theme activate twoj-motyw
Włączenie trybu debugowania bez edycji plików:
wp config set WP_DEBUG true --rawwp config set WP_DEBUG_LOG true --raw
To polecenie jest powodem, dla którego WP-CLI powinien znać każdy, kto przenosi strony. Po zmianie domeny lub przejściu na HTTPS trzeba podmienić stary adres w bazie danych. Problem w tym, że WordPress trzyma część ustawień w formacie serializowanym - ciągach, w których zapisana jest długość tekstu. Ręczna podmiana w pliku SQL zmienia tekst, ale nie długości, i dane stają się nieczytelne: znikają ustawienia motywu, rozjeżdżają się widżety, Elementor gubi style.
wp search-replace 'http://staradomena.pl' 'https://nowadomena.pl' --dry-run
Wariant z --dry-run pokazuje liczbę trafień w każdej tabeli bez zapisywania. Gdy wynik wygląda sensownie, uruchamiasz to samo bez tej flagi. WP-CLI rozumie dane serializowane i przelicza długości automatycznie - dlatego to jedyna metoda podmiany, jaką stosujemy przy migracjach. Cały proces przenosin, razem z DNS i testami, opisuje przewodnik o przeniesieniu WordPressa na nową domenę.
wp db export tworzy zrzut bazy w bieżącym katalogu, wp db import plik.sql go wgrywa - bez limitów czasu, które przerywają duże importy w phpMyAdmin. Dwa dodatkowe polecenia przydają się przy porządkach:
wp db size --tables - pokazuje rozmiar każdej tabeli. Jeśli baza spuchła, zwykle winne są tabele logów jakiejś wtyczki albo transienty.
wp transient delete --expired - usuwa wygasłe dane tymczasowe. Na starych instalacjach potrafi odchudzić bazę o dziesiątki megabajtów.
Regularny zrzut bazy przez WP-CLI to też najprostszy własny backup - jak go zaplanować i gdzie trzymać kopie, opisuje tekst o kopiach zapasowych strony. Na naszym hostingu kopie robimy codziennie automatycznie, ale dodatkowy zrzut przed każdą większą zmianą to dobry nawyk, który nic nie kosztuje.
Kilka poleceń, które ratują godziny przy pracy z treścią:
wp media regenerate - przebudowuje wszystkie miniatury zdjęć. Niezbędne po zmianie motywu, który używa innych rozmiarów obrazków.
wp post list --post_type=page - lista wszystkich stron z identyfikatorami. Przydatne, gdy szukasz identyfikatora do szablonu albo przekierowania.
wp comment delete $(wp comment list --status=spam --format=ids) - kasuje cały spam z komentarzy jednym ruchem.
wp cron event list - pokazuje zaplanowane zadania. Gdy strona robi coś dziwnego o dziwnych porach, tu często widać przyczynę.
WP-CLI wykonuje operacje natychmiast i bez pytania o potwierdzenie, więc kilka zasad trzymamy żelazną ręką:
Po pierwsze: przed każdą operacją zmieniającą dane - wp db export. Zrzut bazy waży zwykle kilkanaście megabajtów i robi się w sekundy, a cofnięcie błędu bez niego bywa niemożliwe.
Po drugie: wszystko, co ma wariant --dry-run, uruchamiaj najpierw z tą flagą. Dotyczy zwłaszcza search-replace.
Po trzecie: uważaj na polecenia znalezione w internecie z flagą --allow-root albo z rm w środku. Na hostingu współdzielonym nie pracujesz jako root, więc ta flaga nigdy nie powinna być potrzebna - jej obecność w gotowym skrypcie to sygnał, że autor pisał go na szybko i bez dbałości o bezpieczeństwo.
I po czwarte: WP-CLI nie zastępuje zabezpieczeń strony. Zestaw praktyk, które realnie podnoszą odporność WordPressa na włamania, zebraliśmy w poradniku 12 kroków hardeningu WordPressa.
| Zadanie | Polecenie |
|---|---|
| wersja WordPressa | wp core version |
| weryfikacja plików rdzenia | wp core verify-checksums |
| lista wtyczek | wp plugin list |
| aktualizacja wszystkich wtyczek | wp plugin update --all |
| wyłączenie wtyczki | wp plugin deactivate nazwa |
| lista administratorów | wp user list --role=administrator |
| zmiana hasła użytkownika | wp user update login --user_pass=Haslo |
| eksport bazy | wp db export |
| import bazy | wp db import plik.sql |
| rozmiary tabel | wp db size --tables |
| podmiana adresów | wp search-replace 'stary' 'nowy' --dry-run |
| czyszczenie transientów | wp transient delete --expired |
| przebudowa miniatur | wp media regenerate |
| zaplanowane zadania | wp cron event list |
| włączenie logu błędów | wp config set WP_DEBUG_LOG true --raw |
WP-CLI nie jest narzędziem tylko dla programistów. Jeśli prowadzisz stronę na WordPressie i raz w miesiącu robisz aktualizacje, samo wp db export plus wp plugin update --all zwróci czas poświęcony na naukę już przy trzecim podejściu. A w sytuacji awaryjnej - gdy kokpit nie działa, a strona leży - znajomość trzech poleceń z sekcji ratunkowej bywa różnicą między kwadransem a całym dniem przestoju.
Na każdym pakiecie naszego hostingu WP-CLI jest gotowe do użycia od pierwszego logowania - wystarczy dodać klucz SSH w panelu.
Wszystkie poradniki z kategorii: WordPress