Instalowanie, aktualizowanie i zarządzanie wtyczkami WordPress za pomocą WP-CLI

Opublikowany: 2022-07-26

WP-CLI pozwala zrobić praktycznie wszystko, co możesz zrobić w panelu administracyjnym WordPressa, ale w wierszu poleceń. Oszczędza to dużo czasu i zapewnia czystszy przepływ pracy. Możesz użyć WP-CLI do zarządzania rdzeniem WordPress, uruchamiania aktualizacji motywów, zarządzania instalacjami wielostanowiskowymi i wielu innych. W tym artykule skupimy się na jednym z najczęstszych przypadków użycia, zarządzaniu wtyczkami WordPress.

Wszystkie polecenia WP-CLI mają taką samą strukturę. Zawsze istnieje polecenie nadrzędne (takie jak wp plugin ) i podpolecenie (takie jak install ), po których następują parametry i przełączniki. W tym artykule skoncentrujemy się na wp plugin i jej podkomendach, ale bardziej szczegółowe wyjaśnienie można znaleźć w naszym przewodniku po strukturze poleceń WP-CLI.

W tym artykule użyto polecenia wp plugin jako przykładu, podkreślając, jak zainstalować i aktywować wtyczki za pomocą WP-CLI. W tym artykule zagłębimy się w sposób zarządzania naszymi wtyczkami za pomocą interfejsu wiersza poleceń WordPressa.

Instalowanie i aktywowanie wtyczek

Obecnie istnieje 16 oficjalnych podkomend dla polecenia rodzica wp plugin . W tej sekcji omówimy podkomendy dotyczące instalacji i aktywacji. Przyjrzymy się również, jak zainstalować i aktywować wtyczki za pomocą jednego polecenia. Przyjrzymy się również, jak instalować wtyczki ze źródeł innych niż katalog wtyczek WordPress.

Wpisz wp plugin install , a następnie oficjalny slug wtyczki, aby zainstalować najnowszą wersję:

instalacja wtyczki wp hello-dolly
Instalowanie Hello Dolly (1.7.2)
Pobieranie pakietu instalacyjnego z https://downloads.wordpress.org/plugin/hello-dolly.1.7.2.zip...
Używając buforowanego pliku '/Users/eriktorsner/.wp-cli/cache/plugin/hello-dolly-1.7.2.zip'...
Nie można zweryfikować autentyczności hello-dolly.1.7.2.zip, ponieważ nie znaleziono podpisu.
Rozpakowywanie paczki...
Instalowanie wtyczki...
Wtyczka została pomyślnie zainstalowana.
Sukces: zainstalowano 1 z 1 wtyczek.

Następnie aktywujemy wtyczkę za pomocą polecenia wp plugin activate :

Wtyczka wp aktywuj hello-dolly
Wtyczka „hello-dolly” aktywowana.
Sukces: aktywowano 1 z 1 wtyczek.

Wyszukiwanie wtyczki wtyczki

Zauważ, że slug często różni się od nazwy wtyczki. Ślimak jest widoczny w adresie URL wtyczki w katalogu wtyczek WordPressa, ale możesz przyspieszyć przepływ pracy, trzymając się wiersza poleceń i używając podkomendy search , po której następują dwa parametry i ich wartości: --per-page=1 i --fields=name,slug .

Opcjonalny parametr --per-page mówi WP-CLI, ile wyników ma nam pokazać, w tym przypadku tylko jeden. Domyślnie wyświetla 10 wyników, jeśli nie podasz tego parametru. Przypisałem mu tutaj wartość 1 , ponieważ chcę zobaczyć tylko najbardziej odpowiedni wynik.

Parametr --fields mówi WP-CLI, aby poprosił o określone pola z API, w tym przypadku o nazwę wtyczki i slug. Istnieje szeroki zakres wartości, których możesz tutaj użyć, w tym version , aby wyświetlić bieżący numer wersji, oraz rating , aby wyświetlić oceny wtyczki zarówno jako procent, jak i całkowitą liczbę ocen. Możesz zamiast tego użyć --field=<field> , jeśli chcesz wyświetlić tylko wynik pojedynczego pola. W poleceniu wp plugin search należy użyć parametru --fields lub --field .

Wyszukiwanie wtyczek wp "wp offload media" --per-page=1 --fields=nazwa,slug
Sukces: wyświetlanie 1 z 66 wtyczek.
+------------------------------------------------- -------------------------------+------------------ --------+
| nazwa | ślimak |
+------------------------------------------------- -------------------------------+------------------ --------+
| WP Offload Media Lite dla Amazon S3, DigitalOcean Spaces i Google Cloud Sto | amazon-s3-i-cloudfront |
| wściekłość | |
+------------------------------------------------- -------------------------------+------------------ --------+

Ponieważ odpowiedzią na to polecenie jest lista, jest to dobra okazja, aby pokazać, do czego służy parametr --format . Poprośmy WP-CLI, aby podał nam tę listę w formacie JSON, a następnie prześlij ją przez narzędzie jq, aby uzyskać ładniejsze formatowanie. Narzędzie jq to lekki procesor JSON wiersza polecenia, który można zainstalować za pomocą powyższego łącza lub wypróbować online. Pamiętaj, aby pominąć | jq | jq z poniższego polecenia, jeśli nie masz go zainstalowanego.

Kiedy pytamy o dane wyjściowe w formacie JSON, WP-CLI pomija komunikat o stanie, więc nie otrzymujemy uszkodzonego JSON:


$ wp plugin search "wp offload media" --per-page=1 --fields=nazwa,slug --format=json | jq
[
  {
    "name": "WP Offload Media Lite dla Amazon S3, DigitalOcean Spaces i Google Cloud Storage",
    "slug": "amazon-s3-i-cloudfront"
  }
]

Aby aktywować wtyczkę po jej zainstalowaniu, użyj wp plugin activate , a następnie oficjalny slug wtyczki.

Instalowanie i aktywowanie wtyczki w tym samym czasie

Jeśli chodzi o zarządzanie wtyczkami za pomocą WP-CLI, jedną z dużych zalet jest to, że możesz zainstalować i aktywować wtyczkę za pomocą jednego polecenia. activate może być użyta jako podkomenda w wp plugin , może być również użyta jako parametr w poleceniu wp plugin install :

# Jednoczesna instalacja i aktywacja wtyczki
instalacja wtyczki wp -- aktywuj hello-dolly

Instalowanie określonej wersji wtyczki

Często zdarza się, że chcesz zainstalować określoną wersję wtyczki do celów testowych. Dopóki żądana wersja jest nadal dostępna w katalogu wtyczek WordPress, możesz wybrać dowolną wersję, którą uznasz za odpowiednią:

# Instalowanie określonej wersji wtyczki
instalacja wtyczki wp woocommerce --wersja=5.5.3

Instalowanie wtyczek z innych lokalizacji

Katalog wtyczek WordPress nie jest jedynym miejscem, w którym możemy znaleźć wtyczki. Możemy też zainstalować wtyczkę prosto z systemu plików. W większości przypadków, gdy kupujesz wtyczkę premium, otrzymujesz początkową dostawę w postaci pliku zip. WP-CLI z radością zainstaluje ten plik zip bezpośrednio, bez konieczności wcześniejszego wyodrębniania pakietu:

# Instalowanie wtyczki z folderu Pobrane
$ wp plugin install ~/Downloads/Advanced-custom-fields-pro.zip

Działa to również, jeśli wtyczka, którą chcesz zainstalować, jest dostępna pod adresem URL, być może dostępna tylko po podaniu poświadczeń za pomocą parametrów żądania lub na serwerze z certyfikatem z podpisem własnym:

# Pobierz wtyczkę z adresu URL
instalacja wtyczki wp http://www.hellfish.media/my-plugin.zip

# ...lub nawet prywatny plik z wiadra Amazona:
instalacja wtyczki wp https://s3.amazonaws.com/bucketname/my-plugin.zip?X-Amz-SignedHeaders=host&X-Amz-Expires=900&X-Amz-Signature=abc123

# Z naszego wewnętrznego serwera z certyfikatem z podpisem własnym:
instalacja wtyczki wp https://intranet.hellfish.media/my-plugin.zip --insecure

Aktualizowanie wtyczek za pomocą WP-CLI

Po zainstalowaniu wtyczki ważne jest, aby ją aktualizować ze względów bezpieczeństwa. Aby dowiedzieć się, czy są jakieś wtyczki do zaktualizowania, możemy uruchomić polecenie wp plugin list :

lista wtyczek wp
+-------------------------------+----------+------ --+---------+
| nazwa | status | aktualizacja | wersja |
+-------------------------------+----------+------ --+---------+
| amazon-s3-i-cloudfront | aktywny | dostępne | 2.6.1 |
| witaj-dolly | aktywny | dostępne | 1.7.1 |
| wunderdevmu | obowiązkowy | brak | 1.0 |
+-------------------------------+----------+------ --+---------+

W takim przypadku zarówno wtyczki Hello Dolly, jak i WP Offload Media wymagają aktualizacji. Oczywiście istnieje osobna podkomenda nazywana update .

Możemy albo aktualizować je pojedynczo, albo trochę leniwie i po prostu aktualizować wszystko, co wymaga aktualizacji za jednym razem, używając przełącznika --all . Domyślnym zachowaniem polecenia update jest aktualizacja do najnowszej dostępnej wersji, która obejmuje uaktualnienia wersji głównych. Ale używając przełącznika --minor możemy być trochę bardziej ostrożni i aktualizować tylko wersje drugorzędne. Na przykład możemy powiedzieć mu, aby zaktualizować z 1.2.3 do 1.3.0, ale nie do 2.0.0. Możemy nawet zachować szczególną ostrożność i użyć przełącznika --patch , aby ograniczyć aktualizacje do samych łatek, tj. z wersji 1.2.3 do 1.2.5, ale nigdy do 1.3.0.

# Ostrożnie aktualizuj wtyczki jeden po drugim
Aktualizacja wtyczki wp wp-offload-media
Aktualizacja wtyczki wp hello-dolly

# Podejście kowboja
Aktualizacja wtyczki wp --wszystkie

# Trochę bardziej rozsądnie
Aktualizacja wtyczki wp --all --minor

# Bardzo defensywny
Aktualizacja wtyczki wp --all --patch

Uwaga: Przełączniki --minor i --patch zakładają, że wtyczka używa wersjonowania semantycznego. Nie wszystkie wtyczki to robią, więc musisz to sprawdzić pod kątem wtyczek, których używasz, aby nie dostać żadnych nieprzyjemnych niespodzianek. Opcja --dry-run pozwala sprawdzić i upewnić się, że polecenia są poprawne:

# Przetestuj aktualizację pojedynczej wtyczki do tylko łatek
Aktualizacja wtyczki wp hello-dolly --patch --dry-run

Parametr --exclude=<plugin name> służy do wskazania, które wtyczki powinny być wyłączone z aktualizacji. Dołącz nazwy wtyczek jako listę oddzieloną przecinkami, a WP-CLI zaktualizuje wszystkie inne wtyczki, pozostawiając je w spokoju:

Aktualizacja wtyczki wp --all --exclude=hello-dolly
Włączam tryb konserwacji...
Pobieranie aktualizacji z https://deliciousbrains.com/my-account/download/7512/?version=2.6.2...
Rozpakowywanie aktualizacji...
Instalowanie najnowszej wersji...
Usuwam starą wersję wtyczki...
Wtyczka została zaktualizowana pomyślnie.
Wyłączam tryb konserwacji...
+--------------------------+-----------------+------------ --+---------+
| nazwa | stara_wersja | nowa_wersja | status |
+--------------------------+-----------------+------------ --+---------+
| amazon-s3-i-cloudfront | 2.6.1 | 2.6.2 | Zaktualizowano |
+--------------------------+-----------------+------------ --+---------+

Wymuszanie ponownej instalacji wtyczki

Większość wtyczek premium ma własne wbudowane narzędzie do sprawdzania aktualizacji, które działa również świetnie z WP-CLI. Z mojego doświadczenia wynika, że ​​każda wtyczka, którą można zaktualizować jednym kliknięciem za pośrednictwem stron administracyjnych WordPress, może być również aktualizowana za pomocą WP-CLI. Jednak w niektórych przypadkach aktualizacje są dostarczane przez nową wersję pliku zip, który należy umieścić we właściwym miejscu na serwerze. Możesz zastosować tego rodzaju aktualizacje, wymuszając ponowną instalację wtyczki za pomocą przełącznika --force :

# Wymuś ponowną instalację wtyczki
instalacja wtyczki wp ~/Downloads/my-custom-plugin-v2.zip --force

Włączanie automatycznych aktualizacji

Od wersji 5.5 WordPress może automatycznie aktualizować wtyczki. Automatyczne aktualizacje muszą być włączone dla każdej wtyczki. WP-CLI nie oferuje żadnej obsługi zbiorczej aktualizacji automatycznych. Należy to zrobić indywidualnie dla każdej wtyczki za pomocą podkomendy auto-updates . Możesz zobaczyć, jak to działa z następującymi poleceniami:

# Sprawdź, czy automatyczne aktualizacje są włączone dla wtyczki
wp plugin status automatycznej aktualizacji hello-dolly

# Włącz automatyczne aktualizacje 
automatyczne aktualizacje wp wp włączają hello-dolly

# Wyłącz to ponownie
automatyczne aktualizacje wtyczki wp wyłączają hello-dolly

Dezaktywacja i usuwanie wtyczek

Instalowanie, aktywowanie i aktualizowanie wtyczek to jedne z najczęstszych zadań, ale istnieją inne zadania związane z zarządzaniem wtyczkami, które może dla nas obsłużyć WP-CLI.

Jeśli kiedykolwiek próbowałeś dowiedzieć się, co powoduje problem w Twojej witrynie WordPress, prawdopodobnie doradzono Ci dezaktywację wszystkich wtyczek jako jeden z pierwszych kroków. Można to zrobić za pomocą obsługi zbiorczej w przeglądarce internetowej, ale zawsze mnie to denerwuje. Wolę to zrobić za pomocą wiersza poleceń za pomocą przełącznika --all .

# Dezaktywuj wszystkie wtyczki na raz
dezaktywacja wtyczki wp --all

# I ponownie je aktywuj
wp plugin aktywuj --all

Całkowite usunięcie wtyczki jest również łatwe dzięki WP-CLI. Jedną z różnic między robieniem tego za pomocą wiersza poleceń a przeglądarki jest to, że WP-CLI pozwala usunąć wtyczkę bez uprzedniego uruchamiania haków dezaktywacji. Jeśli kiedykolwiek miałeś zainstalowaną wtyczkę, która powoduje awarię WordPressa podczas dezaktywacji, wiesz, dlaczego może to być tak przydatne:

# Dezaktywuj i odinstaluj 
Wtyczka wp dezaktywuje hello-dolly --uninstall

# Usuń wtyczkę, nie dając jej szansy na dezaktywację
wp plugin usuń hello-dolly

Istnieje również podkomenda toggle , która jest związana z aktywacją i dezaktywacją wtyczek. Odwróci lub przełączy stan aktywacji, aby zmienił się na przeciwny do obecnego stanu. Możesz dodać --network , aby włączyć lub wyłączyć wtyczkę dla całej sieci wielostanowiskowej.

Sumy kontrolne wtyczek

WP-CLI ma możliwość porównywania sum kontrolnych zainstalowanych wtyczek z sumami kontrolnymi dla tej samej wtyczki i wersji w katalogu wtyczek WordPress. Jest to bardzo skuteczny sposób ustalenia, czy pliki wtyczek w instalacji WordPressa zostały zmanipulowane. Jeśli tak, to silny znak, że zostałeś zhackowany.

Sumy kontrolne to specjalne algorytmy komputerowe, które mogą pobierać dane wejściowe dowolnego typu i rozmiaru i konwertować je na krótki ciąg. Ten ciąg ma zwykle około 20-40 znaków, co sprawia, że ​​nadaje się do przechowywania w bazie danych. Ten wynikowy ciąg jest nazywany haszem, podpisem lub ze względów historycznych sumą kontrolną.

To, co czyni te algorytmy wyjątkowymi, to fakt, że jeśli nawet jeden znak zmieni się na wejściu, dane wyjściowe będą zupełnie inne. Wprowadź wszystkie pliki wtyczki do algorytmu sumy kontrolnej jeden po drugim, a otrzymasz jeden mały podpis lub sumę kontrolną, która reprezentuje całą wtyczkę.

Za każdym razem, gdy nowa wersja wtyczki jest publikowana w katalogu wtyczek WordPress, suma kontrolna jest obliczana i zapisywana dla tej konkretnej wersji. Kilka miesięcy później, gdy chcesz dokładnie sprawdzić, czy nie zostałeś zhakowany, możesz poprosić WP-CLI o obliczenie sumy kontrolnej dla wtyczek i porównanie ich z oryginalnymi sumami kontrolnymi, które przechowuje WordPress. Jeśli po twojej stronie są dodane, zmodyfikowane lub brakujące pliki, suma kontrolna wtyczki będzie się różnić od oryginalnej, a WP-CLI będzie o tym trochę głośno mówić.

Podkomenda, która obsługuje tę magię sprawdzania haszowania, nazywa się verify-checksums i jest to zasadniczo to samo, co pytanie „czy moje wtyczki są niezmienione, odkąd mam je z katalogu wtyczek WordPressa?”

# Sprawdź pojedynczą wtyczkę
wp plugin weryfikacja sum kontrolnych hello-dolly
Sukces: zweryfikowano 1 z 1 wtyczek

# Sprawdź wszystkie wtyczki pochodzące z repozytorium
wp plugin sumy kontrolne weryfikacji --all

Działa to tylko w przypadku wtyczek, które zostały zainstalowane z oficjalnego katalogu wtyczek WordPress, więc twoje wtyczki premium nie będą sprawdzane za pomocą tego polecenia. Podkomenda Verify verify-checksums istnieje również dla wp core ale nie może być używana do weryfikacji motywów WordPress.

Polecenia do pisania skryptów

Jak dotąd polecenia, które omówiliśmy, są przydatne dla każdego, kto musi zarządzać wtyczkami WordPress. Ostatni zestaw wp plugin , który zamierzam omówić, jest interesujący przede wszystkim dla programistów WordPress, ponieważ są one przeznaczone głównie do użycia w skryptach Bash.

Najpierw musimy porozmawiać trochę o kodach wyjścia Uniksa. W systemie Unix wszystkie programy, które kończą działanie, wracają z kodem zakończenia. Standardowa interpretacja jest taka, że ​​kod zakończenia 0 oznacza, że ​​program zakończył się dobrze, podczas gdy niezerowy kod zakończenia wskazuje, że wystąpił błąd.

Kody błędów są często używane w skryptach powłoki do użycia w instrukcjach if/else i innych formach rozgałęzień. Nie widzimy kodu wyjścia podczas normalnego uruchamiania polecenia z wiersza poleceń, ale zawsze możemy go znaleźć za pomocą $? :

# Uruchom coś, co działa i uzyskaj kod wyjścia
data
echo $?
0

# Uruchom coś, co się nie powiedzie
ls /nieistniejącyfolder
ls: /idongfdg: Brak takiego pliku lub katalogu
echo $?
1

W WP-CLI mamy kilka poleceń, które w większości mają na celu sprawdzenie czegoś i zwrócenie użytecznego kodu wyjścia. Polecenie wp plugin ma dwie z tych podkomend, is-installed i is-active , które pozwalają nam sprawdzić, czy dana wtyczka jest zainstalowana i aktywowana:

# Sprawdź, czy hello-dolly jest zainstalowane (jest)
Wtyczka wp jest zainstalowana hello-dolly
echo $?
0

# Usuń hello-dolly i sprawdź ponownie
wp plugin usuń hello-dolly
Wtyczka wp jest zainstalowana hello-dolly
echo $?
1

# Sprawdź, czy woocommerce jest aktywowany
Wtyczka wp jest aktywna woocommerce
echo $?
0

# Dezaktywuj woocommerce
Wtyczka wp dezaktywuje woocommerce
Wtyczka wp jest aktywna woocommerce
echo $?
1

Korzystając z powyższych poleceń, można pisać skrypty Bash, które wykonują różne rzeczy w zależności od tego, czy dana wtyczka jest zainstalowana/aktywowana, czy nie.

Ostatnią komendą, którą podejrzewam, że jest przeznaczona głównie do celów skryptowych, jest path . To polecenie po prostu zwraca ścieżkę do głównego pliku PHP wtyczki, a co za tym idzie również do folderu wtyczki. Możemy to połączyć z innymi sztuczkami Bash, na przykład tak:

# Pokaż wszystkie pliki w folderze wtyczek woocommerce
ls -al $(dirname $(ścieżka wtyczki wp woocommerce))

Nie jest to zbyt przydatne w codziennej pracy z wierszem poleceń, ale z pewnością jest przydatne podczas pisania skryptów i trzeba uzyskać ścieżkę do wtyczki.

Wniosek

Jak widać, zarządzanie wtyczkami WordPress za pomocą wiersza poleceń zwiększa szybkość i znacznie upraszcza wiele typowych zadań. Omówiłem najczęstsze zadania związane z zarządzaniem wtyczkami, ale zachęcam do dalszej samodzielnej eksploracji. Wkrótce przekonasz się, że moc WP-CLI wykracza daleko poza wtyczki, pozwalając zrobić praktycznie wszystko, co możesz zrobić w panelu administracyjnym WordPressa, ale znacznie szybciej.

Czy masz jakieś świetne przykłady tego, jak używasz polecenia wp plugin ? Daj mi znać w komentarzach.