WP-CLI to oficjalny interfejs wiersza poleceń dla WordPressa. Zamiast klikać po wp-admin, wpisujesz polecenia w terminalu na serwerze: wp core update aktualizuje WordPressa, wp plugin update --all aktualizuje każdą wtyczkę, wp db export tworzy kopię bazy danych, a wp search-replace podmienia domenę w całej witrynie bez uszkadzania danych serializowanych. Projekt założyli w 2011 roku Andrés Cifuentes i Cristi Burcă, dziś jest utrzymywany jako oficjalny projekt WordPress.org i stał się standardowym narzędziem stojącym za profesjonalną konserwacją WordPressa, automatyzacją hostingu i procesami wdrożeniowymi. Argument praktyczny jest prosty: wszystko, co robi wp-admin, WP-CLI robi szybciej, a do tego dochodzi długa lista rzeczy, których wp-admin nie potrafi w ogóle, jak weryfikacja plików rdzenia wobec oficjalnych sum kontrolnych po podejrzeniu włamania, naprawa witryny, której panel jest nieosiągalny z powodu błędu krytycznego, albo uruchomienie tego samego skryptu konserwacyjnego na pięćdziesięciu witrynach, zanim wystygnie Ci kawa.
Czym jest WP-CLI i kto go utrzymuje?
WP-CLI to aplikacja w PHP, która ładuje WordPressa w terminalu i udostępnia jego funkcje jako polecenia. Ponieważ uruchamia prawdziwą instalację WordPressa, pracuje na Twoich realnych danych, Twoich zainstalowanych wtyczkach i Twojej konfiguracji, a nie na ich symulacji. Projekt mieszka pod adresem wp-cli.org i na GitHubie, wydania są koordynowane z projektem WordPress, a katalog poleceń w podręczniku dewelopera WordPressa dokumentuje każde wbudowane polecenie.
Wymagania są skromne: dostęp SSH do serwera, PHP w wierszu poleceń i środowisko uniksopodobne (Linux, macOS albo Windows przez WSL). Ten pierwszy warunek jest jedynym prawdziwym strażnikiem. Na hostingu współdzielonym bez dostępu SSH z WP-CLI nie skorzystasz, podczas gdy większość dostawców hostingu zarządzanego dla WordPressa nie tylko na nie pozwala, ale wręcz je preinstaluje.
Jak zainstalować WP-CLI?
Zanim cokolwiek zainstalujesz, sprawdź, czy już go nie ma. U wielu dostawców wpisanie wp --info w sesji SSH odpowiada na to pytanie. Jeśli nie, instalacja to dwie minuty pracy, bo WP-CLI dostarczany jest jako pojedynczy plik Phar:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# Sprawdzenie instalacji
wp --infoPrzy pracy lokalnej rzadko trzeba go instalować ręcznie, bo Local, DDEV, Lando i oficjalny wp-env dostarczają WP-CLI w komplecie. Po instalacji polecenia uruchamia się z katalogu głównego WordPressa albo z dowolnego miejsca, używając flagi --path wskazującej na instalację.
Najważniejsze polecenia WP-CLI na co dzień
Struktura polecenia to zawsze wp, temat, podpolecenie i opcje. Oto przegląd tych, które dźwigają większość realnej konserwacji:
# Rdzeń: sprawdzenie, aktualizacja, weryfikacja
wp core version
wp core update
wp core verify-checksums
# Wtyczki: lista, instalacja, aktualizacja wszystkiego
wp plugin list
wp plugin install wordpress-seo --activate
wp plugin update --all
# Motywy działają tak samo
wp theme list
wp theme update --all
# Użytkownicy: tworzenie, lista, reset hasła
wp user list
wp user create anna anna@example.com --role=editor
wp user update admin --user_pass="nowe-silne-haslo"
# Baza danych: eksportuj, zanim czegokolwiek dotkniesz
wp db export backup-$(date +%F).sql
wp db size --human-readableDwa szczegóły czynią polecenia wyświetlające listy użyteczniejszymi, niż wyglądają. Każda lista przyjmuje filtry i formaty wyjścia, więc wp plugin list --update=available --format=csv daje Ci maszynowo czytelny raport oczekujących aktualizacji. A wp core verify-checksums porównuje każdy plik rdzenia z oficjalnymi sumami kontrolnymi WordPress.org, co zamienia mgliste pytanie, czy ktoś zmodyfikował moje pliki rdzenia, w odpowiedź tak albo nie w pięć sekund. To jedno z pierwszych poleceń, które warto uruchomić na witrynie podejrzewanej o kompromitację.
Search-replace: polecenie, dla którego warto to wszystko skonfigurować
Funkcją, która przekonuje większość sceptyków, jest wp search-replace. Zmiana domeny, przenosiny ze środowiska staging na produkcję czy przejście na HTTPS wymagają podmiany adresów URL w całej bazie danych. Zrobienie tego surowym SQL psuje WordPressa, bo motywy, wtyczki i widżety zapisują ustawienia jako serializowane dane PHP, gdzie każdy ciąg poprzedzony jest swoją długością. Zamień http na https w serializowanym ciągu przez SQL, a zapisana długość przestanie się zgadzać, więc WordPress po cichu odrzuci całe ustawienie. WP-CLI deserializuje dane, podmienia wartość, serializuje ją ponownie z poprawnymi długościami i zapisuje z powrotem:
# Najpierw dry run: pokazuje, co by się zmieniło, nie zmienia nic
wp search-replace 'http://old-domain.com' 'https://new-domain.com' --dry-run
# Właściwe uruchomienie, z raportem dla każdej tabeli
wp search-replace 'http://old-domain.com' 'https://new-domain.com' --report-changed-onlyFlaga --dry-run zasługuje na stałe miejsce w Twojej pamięci mięśniowej. Odpowiada na pytanie, co by się stało, zanim cokolwiek się stanie, i jest dokładnie tym krokiem potwierdzenia, którego reszta WP-CLI nie ma.
WP-CLI w konserwacji i rozwiązywaniu problemów
Garść poleceń rozwiązuje problemy, które przez przeglądarkę są naprawdę bolesne:
- Zepsuty panel po aktualizacji. Błąd krytyczny wtyczki potrafi całkowicie zamknąć Ci drogę do wp-admin. wp plugin deactivate broken-plugin zadziała mimo to, bo WP-CLI nie potrzebuje wyrenderowanego interfejsu administracyjnego.
- Podgląd zadań cron. wp cron event list pokazuje każde zaplanowane zadanie wraz z czasem następnego uruchomienia, a wp cron event run --due-now wykonuje zaległe. Debugowanie pseudo-crona WordPressa bez tego to zgadywanie.
- Czyszczenie transientów. wp transient delete --expired usuwa wygasłe transienty, które na starszych witrynach rozdymają tabelę opcji.
- Czyszczenie pamięci podręcznej. wp cache flush opróżnia object cache, co przydaje się po wdrożeniach, gdy Redis albo Memcached podaje nieaktualne dane.
- Reguły przepisywania. wp rewrite flush naprawia klasyczny objaw błędu 404 po migracji bez wchodzenia na stronę ustawień bezpośrednich odnośników.
Automatyzacja WordPressa skryptami i aliasami WP-CLI
Ponieważ każde polecenie da się umieścić w skrypcie, WP-CLI zamienia powtarzalną konserwację z pamięci na pliki. Cotygodniowa rutyna aktualizacji staje się krótkim skryptem powłoki: eksport bazy, aktualizacja rdzenia, wtyczek i motywów, weryfikacja sum kontrolnych, gotowe. Ten sam skrypt uruchomi się z zadania cron albo z potoku CI, a pętla po liście ścieżek instalacji obsłuży całe portfolio witryn.
#!/bin/bash
# Minimalna cotygodniowa konserwacja jednej witryny
wp db export ~/backups/backup-$(date +%F).sql
wp core update
wp plugin update --all
wp theme update --all
wp core verify-checksumsDo pracy między środowiskami WP-CLI obsługuje aliasy w pliku wp-cli.yml. Zdefiniuj raz @staging i @production wraz z ich danymi SSH, a potem wp @staging plugin list wykona się zdalnie z Twojego lokalnego terminala. W połączeniu z flagą --ssh terminal na Twoim laptopie staje się centrum sterowania dla każdej witryny WordPress, którą zarządzasz.
Wskazówki bezpieczeństwa dla WP-CLI
Wydajność tnie w obie strony: polecenia wykonują się natychmiast i nie ma funkcji cofnij. Kilka nawyków sprawia, że narzędzie o dużej mocy nie zamienia się w duży problem:
- Eksportuj przed poleceniami niszczącymi. wp db export kosztuje sekundy i zamienia katastrofę w niedogodność. Polecenia takie jak db reset, site empty i search-replace zasługują na niego za każdym razem.
- Korzystaj z dry run tam, gdzie jest dostępny. search-replace ma flagę --dry-run dokładnie z tego powodu.
- Nie uruchamiaj jako root. WP-CLI ostrzega o tym głośno, bo proces działający jako root wykonuje kod PHP witryny z pełnymi prawami systemowymi i tworzy pliki, których użytkownik serwera WWW nie może tknąć. Uruchamiaj go jako ten sam użytkownik, na którym działa witryna.
- Najpierw staging. Każde polecenie, którego nigdy wcześniej nie używałeś, zasługuje na debiut produkcyjny dopiero po próbie na kopii.
WP-CLI i InspectWP: znaleziska na wejściu, poprawki na wyjściu
Raport InspectWP mówi Ci, co wymaga uwagi na witrynie WordPress: przestarzała wersja rdzenia, wtyczki z oczekującymi aktualizacjami albo znanymi podatnościami, motywy, które zostały w tyle. WP-CLI jest najszybszą drogą do działania na dokładnie tych znaleziskach, bo wp core update i wp plugin update --all rozwiązują większość z nich w niecałą minutę, a wp core verify-checksums dodatkowo potwierdza integralność, gdy raport podnosi kwestie bezpieczeństwa. Oba tworzą naturalną pętlę dla każdego, kto zawodowo utrzymuje witryny WordPress: zaplanowane raporty InspectWP wyciągają pracę na wierzch, sesja WP-CLI ją zamyka, a kolejny raport potwierdza naprawę.