Jeśli pracujesz z WordPressem i chcesz podnieść swoją produktywność, koniecznie sprawdź najnowszy odcinek, w którym omawiam trzy niezwykle przydatne komendy WP-CLI: eval, eval-file oraz shell.
Te komendy pozwalają na uruchamianie kodu PHP bezpośrednio w kontekście WordPressa. To idealne rozwiązanie do szybkiego wykonywania jednorazowych operacji, migracji danych czy testów bez konieczności modyfikowania plików. W odcinku dzielę się praktycznymi przykładami zastosowania tych narzędzi, które pomagają lepiej zrozumieć ich potencjał i zastosowanie w codziennej pracy.
🎙️ Nowy odcinek podcastu już dostępny!
🎁 Partner odcinka: CyberFolks
 Z kodem podcast otrzymasz 20% zniżki na hosting WordPress. 
Podcast dostępny m.in w: Spotify, Apple Podcasts, Google Podcasts
TRANSKRYPCJA AUTOMATYCZNA:
Cześć, witaj w kolejnym odcinku Rób WordPressa. Dzisiaj porozmawiamy o temacie, który przewijał się już w moim podkaście. Będziemy mówić tutaj o WPC-LI, czyli o takim narzędziu, które pozwala na obsługę WordPressa i zarządzanie nim z poziomu konsoli. Na przykład jeśli zalogujemy się po SSH na jakiś serwer, no to za pomocą WPC-LI możemy nawet zainstalować WordPressa, zmienić jego konfigurację, napisać post, usunąć czy wykonać jakieś inne operacje typu na przykład podmiana urli w bazie danych.
Tutaj zakres command jest bardzo szeroki. Jeśli nie macie zresztą styczności z WPC.ly to odsyłam Cie do Cię do 11 odcinka mojego podcastu gdzie mówiłem trochę więcej na ten temat. Na moim YouTube znajdziesz również kilka filmów które zawierają przykłady. A dzisiaj chcę się skupić na dwóch a w zasadzie trzech komendach których bardzo często używam i które, z jednej strony dają pewną przewagę pod kątem bezpieczeństwa i wpływu jaki możemy mieć na daną stronę, ale z drugiej strony są również dosyć niebezpieczne, ponieważ możemy mocno namieszać w naszych WordPressach, jeśli będziemy ich używać nieodpowiednio.
Zanim przejdziemy do treści odcinka, chwila dla mojego partnera, czyli Cyberfolks, marki, która dostarcza domeny i hosting pod twojego WordPressa.
W tym odcinku porozmawiamy sobie o komendach eval i evalfile. Na początku mówiłem, że będą to trzy komendy, ale spokojnie. trzeciej powiem na samym końcu, bo to będzie taka, można powiedzieć, wisienka na torcie, a w zasadzie będzie zawierała te komendy w sobie. Komenda wp-eval pozwala uruchomić jakiś kawałek kodu PHP w kontekście naszego WordPressa. Ponieważ to WPC-li, które jest uruchamiane na serwerze, no to musimy uruchomić w kontekście jakiegoś WordPressa. Krótko mówiąc możemy wpisać sobie w terminalu komendę wp-eval i następnie w apostrofach jakąś treść, kod PHP, który zostanie wykonany z załadowanym WordPressem, czyli na przykład możemy używać funkcji WordPressowych chociażby takich jak getOption, getPermaling czy updatePostMeta, przykład. Możemy tych funkcji używać normalnie tak jakby one były w jakiejś tam wtyczce czy w pliku motywu.
Możemy je wykonać po prostu z poziomu naszego terminala. Co za tym idzie te komendy są dodawane, ten kod w ogóle jest dodawany tylko na moment uruchomienia tej komendy. I to jest właśnie dosyć duża zaleta w kontekście całej pracy z tymi komendami. O tym będę mówił jeszcze chwilę później.
Jeśli mamy jakąś taką komendę pojedynczą do wykonania, to oczywiście możemy użyć tego polecenia wp-eva. Natomiast jeśli mamy już jakąś grubszą robotę do zrobienia w tym WordPressie za pomocą kodu PHP, to możemy użyć komendy wp-eval-file. Wtedy możemy podać ścieżkę do pliku PHP, który zostanie wykonany właśnie w kontekście WordPressa. Tak jakbyśmy uruchomili go na przykład z poziomu wtyczki czy z poziomu choćby functions.php w WP.
Dokładnie ten sam efekt możemy uzyskać choćby za pomocą wtyczki, którą sobie dopiszemy do naszego WordPressa, czy jakiejś takiej doklejki kodu na szybko czy to w Functions.php, czy w jakimś innym pliku, który jest wykonywany podczas uruchomienia WordPressa. Natomiast ta metoda, której dzisiaj wam opowiem ma tę zaletę, że my nie modyfikujemy w żaden sposób zachowania WordPressa w takim normalnym trybie. To się przydaje bardzo często, szczególnie w sytuacjach, gdy pracujemy z jakimiś takimi WordPressami, o których mało wiemy. Na przykład przychodzi nowy klient, potrzeba coś zrobić albo mamy jakieś takie środowisko, którego nie chcemy dotykać, nie chcemy nic tam modyfikować, żebyśmy czegoś nie popsuli, żeby nie wybuchło. Jest to jakiś, nie wiem, stary WordPress, którego nikt nie dotykał przez 5 lat. Ale potrzebujemy coś zrobić, na przykład wyciągnąć jakieś dane. No to te komendy się sprawdzają świetnie, ponieważ ani ta komenda, ani ten kod w pliku PHP, który możemy załadować za pomocą wpływa na działanie WordPressa w takim normalnym trybie. Czyli jeśli wejdziemy na tego WordPressa przez przeglądarkę, tego kodu nie ma. WordPress go w ogóle nie widzi. Ten kod nie istnieje dla WordPressa, nawet gdyby on był wrzucony gdzieś tam do public HTML czy w katalogu plugins, teams, gdziekolwiek.
Nie ma tego kodu, ma dla WordPressa. WordPress go nie widzi, nie wykonuje, nic nim nie robi. Co za tym idzie jeśli mielibyśmy tam na przykład jakiś błąd, który by rzucał fatal. No to to nie jest problem, bo ten fatal będzie rzucony tylko w momencie, w którym my wykonamy tą komendę z poziomu terminala, czy to lokalnie na naszym komputerze, jeśli to jest jakaś lokalna instancja na przykład przez SSH na zdalnym będzie to działało na takiej zasadzie, że…
W momencie uruchomienia tej komendy, mamy jakiś błąd w tym kodzie, to rzuci nam Fatala czy jakiś inny Ale to widzimy tylko my. Nie wpływa to na normalną pracę WordPressa. Dosłownie w tej samej sekundzie ktoś może wchodzić z poziomu przeglądarki. WordPress działa bez. I tak jak mówiłem, jest to zupełnie odseparowane od normalnej pracy WordPressa. I teraz tak, do czego my możemy użyć poleceń?
Mówiłem chyba na początku tego odcinka, że dosyć często korzystam z tych komend, zastosowań są wszelkie operacje, które wymagają na przykład eksportu jakichś danych, ale jest to jakiś taki jednorazowy eksport. Tak, na przykład klient mnie prosi, abym wyeksportował jakieś dane dotyczące np. zamówień w e-commerce ale to jest tylko jednorazowa, tych danych w jakimś zupełnie niestandardowym formacie obwarowanych np. jakimiś tam to nie będę pisał pluginu który gdzieś tam umożliwiłby mi to wyeksportowanie tego np. z poziomu. Wolę sobie przygotować taki prosty pliczek który mi zrzuci to np. doc. csv i za pomocą ssh sobie odpalę taki pliczek, wygeneruje co mi trzeba i ten kod może leżeć na serwerze w jakimś bezpiecznym katalogu natomiast on nie wpływa na takie codzienne działanie WordPressa więc nawet gdybym tam zrobił jakiś błąd byłby jakiś tam edge case, który wywali. Nie ma problemu bo ten kod nie bierze udziału w takiej codziennej pracy, takim bardzo częstym zastosowaniem to jest triggerowanie jakichś hooków
Na przykład sobie jakąś wtyczkę, która załóżmy operuje na zamówieniach u-commerce’owych i jest wykonywana jakaś akcja po opłaceniu danego zamóienia, no to w praktyce działa to tak, że u-commerce triggeruje akcję. bodajże UCommercePaymentComplete jeśli mnie pamięć nie myli i ID danego zamówienia jest przekazywany w tej akcji. No to jeśli przy testowaniu musiałbym za każdym dodawać nowe zamówienie, klikać ten koszyk, potem ustawiać, że jednak płatność się powiodła, no to zajmuje mi to bardzo dużo czasu, a sami wiecie, że przy programowaniu często jest tak, że no mamy jakiś mały błąd i cały proces nam się wywala, no to testowanie tego byłoby dosyć uciążliwe.
A tak to możemy sobie w bardzo prosty sposób zrobić komendę na zasadzie eval i do action na przykład uCommerce payment complete i przekazać ID jakiegoś zamówienia na którym sobie testujemy nasz kod i w tym momencie WordPress wykona nam tą akcję. Naprawdę świetne rozwiazanie, bardzo pomagające w pracy w debagowaniu.
Po prostu musimy bezsensownie klikać zamówień czy innych akcji bo nie zawsze też tą akcję da się w taki prosty sposób wywołać a tak możemy sobie wywołać konkretną akcję z konkretnym parametrem i przetestować nasz kod. Kolejne takie zastosowanie, już bardziej taki plik, którymi robi jakieś tam To są operacje związane z wszelkimi migracjami, zmianami. Czasem się zdarza, że np. z jakichś tam musimy zmienić np. strukturę danych, które są przechowywane w jakimś polu post meta. Załóżmy, że zapisujemy sobie jakąś tablicę składającą się z trzech
np. zachodzi potrzeba, że musimy rozdzielić pola, te dane, rozdzielić na przykład to jedno postmeta, które było tablicą przechowującą trzy elementy w taki sposób, że w tym starym polu zostają dwa elementy jako tablica, a ta jedna wartość jest przenoszona do innego pola, no to też bez problemu możemy taki prosty skrypcik, uruchomić go, On nam przeleci całą bazę danych, przemieli nam to wszystko, zrobi to co nam trzeba. Nie ma żadnego problemu. I tak samo możemy to na serwerze, czyli możemy sobie też pominąć te wszystkie procesy związane z CACD, czyli pull requests, automatyczne deployy i tak Tu oczywiście trzeba zaznaczyć jasno, że trzeba wiedzieć co się robi. To są komendy, których możemy użyć do jakichś prostych poleceń, którymi wiele nie zepsujemy, bo nawet jak nam rzuci jakiegoś fatala czy coś, to po prostu rzuci nam go w konsoli. Tyle, nic się więcej nie dzieje.
Ale jednocześnie jest to narzędzie na tyle potężne, że możemy sobie zaorać całą stronę, czy rozwalić bazę danych, czy cokolwiek innego. Więc jeśli robicie takie rzeczy za pomocą tych poleceń na produkcji, to zalecam dużą ostrożność i oczywiście backup bazy danych przed takimi zabawami jest zawsze mile widziany, bo czasem gdzieś tam jakiś jeden nieostrożny błąd i naprawdę możemy mieć spory problem potem po takich zabawach w środowisku produkcyjnym.
Pojawił się tutaj przed chwilą temat deployu, który możemy pominąć, ale też taki skrypt i komenda eval-file może być częścią takiego automatycznego deployu, który wykona jakieś tam operacje, które są wymagane. To oczywiście już mówimy o raczej takich bardziej skomplikowanych wdrożeniach, skomplikowanych środowiskach.
Natomiast to jest też świetna metoda na to, żeby uruchomić jakieś procesy, które są niezbędne na etapie na przykład deployowania nowej wersji aplikacji, czy jakichś innych operacji właśnie związanych z automatycznymi deployami a wszystko można ładnie sobie pospinać w jakimś tam pipeline w github actions bitbackecie czy githlabie.
Ja również bardzo często wykorzystuję tego typu skypty przy okazji migracji, na przykład gdy wykonuję jakąś skomplikowaną migrację z jednej domeny do drugiej, gdzie mamy powiedzmy jakiś rebranding serwisu, ostatnio robiłem taką rzecz, gdzie opróćz kontentu zmieniały się jeszcze jakieś rzeczy konfiguracyjne, choćby właśnie maile, z których są wysyłane, adresy mailowe, których są wysyłane maile z WooCommerce, czy konfiguracja właśnie wtyczki do SMTP. No to mógłbym to wszystko klikać ręcznie po migracji, ale napisałem sobie prosty skrypt, który był odpalony za pomocą eval-file i po takiej migracji zmienił mi takie rzeczy, na przykład podmienił mi logo, jakieś tam adresy mailowe po podmieniał, czy zmienił przykład fav-iconę albo zdjęcia produktów w u-komersie, akurat była taka potrzeba, żeby zamienić zdjęcia z jednym logotypem na zdjęcia z innym logotypem. Więc to spokojnie, mogłem sobie wszystko opisać za pomocą kodu PHP. Mogłem sobie testować taką migrację wielokrotnie i doklejałem sobie po prostu kolejne fragmenty kodu na zasadzie takiej, że jak zobaczyłem, o tu jeszcze trzeba podmienić zdjęcie, tu jeszcze trzeba coś tam zrobić, no to zamiast klikać to po migracji, gdzie też zależało nam na tym, aby ten downtime był jak najniższy.
No to zrobiłem sobie z tego taką procedurę właśnie w pliku PHP, który był odpalony za pomocą tego eval-file i wykonał te wszystkie operacje za mnie, a ja miałem też pewność, że mam to przetestowane wielokrotnie, dzięki czemu moge spokojnie uruchomić taki skrypt i będę wiedział, że wszystko poszło.
Dużą zaletą tych rozwiązań jest to, że możemy sobie ten kod uruchamiać niezależnie, możemy go sobie trzymać gdzieś tam z boku, możemy sobie taki skrypt przygotować właśnie na potrzeby jakiejś jednej konkretnej operacji. Oczywiście tutaj, tak jak mówiłem, zalecam dużą ostrożność, jeśli działamy w jakimś środowisku.
Natomiast mamy tutaj dosyć dużą swobodę, jeśli tylko mamy odpowiednie umiejętności i wiedzę i wiemy jak to zrobić, żeby niczego nie wywalić, no to te polecenia eval i evalfile są naprawdę świetne i robią nam tutaj bardzo dobrą robotę i pomagają w takich codziennych rzeczach związanych z WP.
I na koniec bonus, czyli taka komenda, która w pewien sposób łączy te dwie komeny. Jest to komenda WPShell. I krótko mówiąc, ten WPShell uruchamia nam taką konsolę gdzie możemy sobie operować na naszym WordPressie w taki sposób jak wykonujemy za pomocą SSH jakieś polecenia typu np. LS, CP, MV
No to tu możemy robić w podobny sposób, możemy mu wydać jakąś komendę, czy to właśnie jakiegoś wardumpa możemy zrobić, coś kliknąć Enter, on w tym momencie nam w terminalu zwróci te wszystkie dane i dalej czeka na to co my mu tam wpiszemy w tym kodzie, więc możemy w taki interaktywny sposób wykonywać te polecenia po kolei, możemy wpisywać sobie kolejne komendy, zatwierdzać Enter i on dalej czeka na nasze komendy w PHP, które będą po prostu wykonywane, no bo eval wykonujemy jako pojedynczą komendę, on kończy pracę i w zasadzie to jest wszystko co on dla nas zrobił, a ten WPSHL czeka na kolejne polecenia, które możemy mu wydawać i te kolejne linijki kodu są wykonywane, a to co zwróci dana funkcja, dana metoda jest po prostu zwracane w terminalu.
Podsumowując te wszystkie komendy pomogą Ci zarządzać WordPressem na takim bardziej profesjonalnym poziomie właśnie z poziomu konsoli. Oczywiście te komendy eval czy eval-file również świetnie się sprawdzają we wszelkich automatyzacjach, jakichś skryptach gdzie możemy sobie zautomatyzować pewne procesy, czy to podczas migracji, czy właśnie gdzieś tam po zdeplojowaniu zmian możemy sobie wyczyścić transienty, przebudować strukturę odnośników, czy inne rzeczy związane choćby z caching, wyczyścić cache. To się często przyda przy takich zautomatyzowanych procesach, gdzie wypuszczamy np. nową wersję wtyczki, motywu czy jakiegoś tam innego komponentu strony i za pomocą tych komend możemy sobie to wszystko ładnie zautomatyzować.
Ja mam też kurs w ofercie, który nagrałem jakiś czas temu, natomiast on nadal jest aktualny i ten kurs znajduje się pod adresem maciejkuchnik.pl/kurs. Jest to kurs dotyczący pracy z Wordpresem za pomocą SSH. Oczywiście WPC Li jest też tam omawiany, więc jeśli zainteresował Was bardziej ten temat, to zapraszam Was na maciekuchnik.pl Tam znajdziecie wszystkie szczegóły.
W dzisiejszym odcinku to wszystko. Dzięki za wysłuchanie i zapraszam Cię do kolejnych odcinków. Cześć!
 
			 
			 
			