Kurs WP-CLI - polecenia i przykłady.
WP-CLI to interfejs wiersza poleceń dla platformy WordPress. Dzięki niemu możesz aktualizować system, instalować wtyczki, konfigurować Wordpress czy zarządzać kontami użytkowników. Wszystko to bez korzystania z przeglądarki internetowej. Dzięki naszemu kursowi WP-CLI będziesz mógł łatwo wykonywać zadania administracji Wordpress.
Narzędzie wp-cli nie jest wtyczką. To oprogramowanie dostępne dla wszystkich klientów posiadających dostęp do SSH w swoich sługach hostingu HitMe.pl jak: Hosting WWW NVMe, Hosting Elastyczny, Hosting Wordpress, Hosting Prestashop.
Aby skorzystać z wp-cli
potrzebujemy dostępu do konsoli SSH, dlatego jeśli jeszcze tego nie robiłeś sprawdź jak zalogować się do serwera przez SSH.
Komendy wp-cli
Będąc zalogowanym do naszego konta na serwerze, najlepiej jak wejdziemy do katalogu z naszym Wordpress np. /domains/mojadomena.pl/public_html/
w innym przypadku do każdej komendy musimy dodawać ścieżkę do katalogu Wordpress, jakim chcemy zarządzać.
Przykład podania ścieżki do katalogu Wordpress:
wp {komenda} --path=/domains/mojadomena.pl/public_html/
Jeśli nie znasz poleceń systemowych jak poruszać się po katalogach na serwerze Linux - sprawdź najpierw nasz poradnik Podstawowe komendy Linux - Poruszanie się po katalogach.
Zarządzanie wtyczkami Wordpress
Do wyświetlenia listy wtyczek służy polecenie wp plugin list
.
[adam-hitme@el3 ~]$ cd domains/mojewp.hmcloud.pl/public_html/
[adam-hitme@el3 public_html]$ wp plugin list
+-------------------------------+----------+--------+---------+
| name | status | update | version |
+-------------------------------+----------+--------+---------+
| akismet | inactive | none | 4.2.4 |
| autoptimize | active | none | 3.0.4 |
| easy-wp-smtp | inactive | none | 1.4.7 |
| hello | inactive | none | 1.7.2 |
| limit-login-attempts-reloaded | active | none | 2.25.3 |
| litespeed-cache | active | none | 4.6 |
| wordpress-importer | active | none | 0.7 |
| wordpress-seo | active | none | 19.1 |
| automation-by-installatron | must-use | none | |
+-------------------------------+----------+--------+---------+
Włączenie wtyczki
Aby wyłączyć daną wtyczkę potrzebujemy jej nazwę z listy oraz komendę wp plugin activate
.
Przykład:
[adam-hitme@el3 public_html]$ wp plugin activate easy-wp-smtp
Plugin 'easy-wp-smtp' activated.
Success: Activated 1 of 1 plugins.
Teraz możemy sprawdzić czy nasza wtyczka faktycznie została aktywowana.
[adam-hitme@el3 public_html]$ wp plugin list | grep easy-wp-smtp
easy-wp-smtp active none 1.4.7
Wyłączenie wtyczki
Analogicznie, aby wyłączyć daną wtyczkę potrzebujemy jej nazwę z listy oraz komendę wp plugin deactivate
.
[adam-hitme@el3 public_html]$ wp plugin deactivate easy-wp-smtp
Plugin 'easy-wp-smtp' deactivated.
Success: Deactivated 1 of 1 plugins.
Instalacja wtyczki
Aby zainstalować wtyczkę i od razu ją włączyć wydajemy polecenie wp plugin install
a jako kolejny parametr podajemy <plugin|zip|url>
czyli nazwę, lokalny plik ZIP lub pełny adres URL do pliku.
[adam-hitme@el3 public_html]$ wp plugin install wordpress-seo
Installing Yoast SEO (19.1)
Pobieranie pakietu instalacyjnego z https://downloads.wordpress.org/plugin/wordpress-seo.19.1.zip...
Rozpakowywanie paczki...
Instalacja wtyczki...
Wtyczka została zainstalowana.
Success: Installed 1 of 1 plugins.
Skąd wziąć nazwy wtyczek? Najszybciej z adresu URL w repozytorium. Np. wtyczka Yoast SEO ma swój adres w repozytorium https://pl.wordpress.org/plugins/wordpress-seo/ i wordpress-seo
jest właśnie jej nazwą.
Jako kolejny parametr możemy podać konkretną wersję wtyczki --version=18.9
i od razu zlecić jej aktywację --activate
.
[adam-hitme@el3 public_html]$ wp plugin install wordpress-seo --version=18.9 --activate
Installing Yoast SEO (18.9)
Pobieranie pakietu instalacyjnego z https://downloads.wordpress.org/plugin/wordpress-seo.18.9.zip...
Using cached file '/home/adam/.wp-cli/cache/plugin/wordpress-seo-18.9.zip'...
Rozpakowywanie paczki...
Instalacja wtyczki...
Wtyczka została zainstalowana.
Activating 'wordpress-seo'...
Plugin 'wordpress-seo' activated.
Success: Installed 1 of 1 plugins.
Usuwanie wtyczki
Aby usunąć wyłączoną wcześniej wtyczkę używamy polecenia wp plugin delete
.
[adam-hitme@el3 public_html]$ wp plugin delete wordpress-seo
Deleted 'wordpress-seo' plugin.
Success: Deleted 1 of 1 plugins.
Tak, wtyczkę musi być wyłączona aby dała się usunąć. Jednak, już przy samym wyłączaniu wtyczki możemy zlecić jej usunięcie dodając polecenie --uninstall
[adam-hitme@el3 public_html]$ wp plugin deactivate wordpress-seo --uninstall
Plugin 'wordpress-seo' deactivated.
Uninstalling 'wordpress-seo'...
Uninstalled and deleted 'wordpress-seo' plugin.
Success: Deactivated 1 of 1 plugins.
Sprawdzenie wersji Wordpress
Aby sprawdzić, którą wersją Wordpress dysponujemy wydajemy polecenie wp core version
.
[adam-hitme@el3 public_html]$ wp core version
6.0
Włączanie trybu konserwacji
Aby aktywować tryb konserwacji na naszym Wordpress używamy komendy wp maintenance-mode activate
.
[adam-hitme@el3 public_html]$ wp maintenance-mode activate
Włączanie trybu konserwacji...
Success: Activated Maintenance mode.
Wyłączenie trybu konserwacji.
[adam-hitme@el3 public_html]$ wp maintenance-mode deactivate
Wyłączanie trybu konserwacji...
Success: Deactivated Maintenance mode.
Baza danych Wordpress
Dzięki wp-cli możemy łatwo wykonywać operacje dotyczące bazy danych Wordpress.
Przydatnym poleceniem jest sprawdzenie rozmiaru tabel naszej bazy danych poleceniem wp db size --tables
.
[adam-hitme@el3 public_html]$ wp db size --tables
+-----------------------+-----------+
| Name | Size |
+-----------------------+-----------+
| wp_commentmeta | 49152 B |
| wp_comments | 98304 B |
| wp_links | 32768 B |
| wp_options | 311296 B |
| wp_postmeta | 245760 B |
| wp_posts | 1654784 B |
| wp_term_relationships | 65536 B |
| wp_term_taxonomy | 49152 B |
| wp_termmeta | 49152 B |
| wp_terms | 49152 B |
| wp_usermeta | 49152 B |
| wp_users | 65536 B |
+-----------------------+-----------+
Jeśli któraś tabela wydaje się zbyt duża możemy zastosować optymalizacje poleceniem wp db optimize
lub naprawę poprzez wp db repair
, jeśli tylko schemat bazy danych wspiera takie metody.
Query - kwerendy SQL z wp-cli.
Bezpośrenio z wp-cli możemy również testować nasze kwerendy SQL co bardzo ułatwia proces kodowania. Używamy do tego polecenia np.: wp db query "SELECT * FROM wp_options"
Kopia bazy danych do pliku (eksport)
Aby wygodnie wykonać kopię bazy danych do pliku na serwerze używamy polecenia wp db export
.
W aktualnym katalogu zostanie utworzony plik ze zrzutem całej bazy danych, której używa Wordpress.
[adam-hitme@el3 public_html]$ wp db export
Success: Exported to 'adam_wpxs2-2022-06-21-123a0ae.sql'.
Łatwa kopia bazy. W ten sposób łatwo wykonamy kopię bazy danych bez potrzeby użycia wtyczki. Przydatne podczas prac administracyjnych.
Import bazy danych z pliku
Mając na serwerze zrzut bazy danych,możemy przywrócić bazę danych z pliku SQL poleceniem wp db import plik.sql
.
[adam-hitme@el3 public_html]$ wp db import adam_wpxs2-2022-06-21-123a0ae.sql
Success: Imported from 'adam_wpxs2-2022-06-21-123a0ae.sql'.
Konta Użytkowników w Wordpress
Za pomocą wp-cli możemy również poręcznie zarządzać użytkownikami naszego Wordpress. Tworzyć nowe konta i modyfikować istniejące, oto lista przykładowych operacji na użytkownikach, które możemy wykonać z konsoli.
Aby wyświetlić listę aktualnych kont użytkowników w naszym Wordpress stosujemy polecenie wp user list
.
[adam-hitme@el3 public_html]$ wp user list
+----+-----------------+----------------+-------------------------------+---------------------+---------------+
| ID | user_login | display_name | user_email | user_registered | roles |
+----+-----------------+----------------+-------------------------------+---------------------+---------------+
| 1 | mqtzmttxq | admin.wp | hitme@xyz.pl | 2022-03-15 06:04:41 | administrator |
+----+-----------------+----------------+-------------------------------+---------------------+---------------+
Utworzenie nowego użytkownika
Gdy chcemy utworzyć nowe konto użytkownika możemy to łatwo zrobić za pomocą wp-cli używając polecenia wp user
.
wp user create <user-login> <user-email> [--role=<role>] [--user_pass=<password>] [--user_registered=<yyyy-mm-dd-hh-ii-ss>] [--display_name=<name>] [--user_nicename=<nice_name>] [--user_url=<url>] [--nickname=<nickname>] [--first_name=<first_name>] [--last_name=<last_name>] [--description=<description>] [--rich_editing=<rich_editing>] [--send-email] [--porcelain]
Przykład: Tworzenie użytkownika michau.kwasiborski Rola:redaktor(editor). Hasło do logowania zostanie wygenerowane automatycznie.
[adam-hitme@el3 public_html]$ wp user create michau.kwasiborski michau-hitme@xyz.pl --role=editor
Success: Created user 6.
Password: 4QPd@QY1TFl8nn^@RN%%lv$E
Zmiana roli użytkownika
Jeśli chcemy nadać nową rolę użytkownikowi, na przykład zmienić redaktora na administratora używamy wp user add-role
[adam-hitme@el3 public_html]$ wp user add-role michau.kwasiborski administrator
Success: Added 'administrator' role for michau.kwasiborski (6).
[adam-hitme@el3 public_html]$ wp user list
+----+--------------------+--------------------+---------------------+---------------------+----------------------+
| ID | user_login | display_name | user_email | user_registered | roles |
+----+--------------------+--------------------+---------------------+---------------------+----------------------+
| 6 | michau.kwasiborski | michau.kwasiborski | michau-hitme@xyz.pl | 2022-06-22 05:16:42 | editor,administrator |
| 1 | mqtzmttxq | admin.wp | hitme@xyz.pl | 2022-03-15 06:04:41 | administrator |
+----+--------------------+--------------------+---------------------+---------------------+----------------------+
Zmiana roli użytkownika następuje poprzez wp user remove-role
.
[adam-hitme@el3 public_html]$ wp user remove-role michau.kwasiborski administrator
Success: Removed 'administrator' role for michau.kwasiborski (6).
[adam-hitme@el3 public_html]$ wp user list
+----+--------------------+--------------------+---------------------+---------------------+---------------+
| ID | user_login | display_name | user_email | user_registered | roles |
+----+--------------------+--------------------+---------------------+---------------------+---------------+
| 6 | michau.kwasiborski | michau.kwasiborski | michau-hitme@xyz.pl | 2022-06-22 05:16:42 | editor |
| 1 | mqtzmttxq | admin.wp | hitme@xyz.pl | 2022-03-15 06:04:41 | administrator |
+----+--------------------+--------------------+---------------------+---------------------+---------------+
Aktualizacja danych użytkownika
Gdy chcemy zmienić dane elementy konta użytkownika Wordpress używam wp user update
wp user update <user>... [--user_pass=<password>] [--user_nicename=<nice_name>] [--user_url=<url>] [--user_email=<email>] [--display_name=<display_name>] [--nickname=<nickname>] [--first_name=<first_name>] [--last_name=<last_name>] [--description=<description>] [--rich_editing=<rich_editing>] [--user_registered=<yyyy-mm-dd-hh-ii-ss>] [--role=<role>] --<field>=<value> [--skip-email]
W ten sposób możemy na przykład zmienić adres e-mail użytkownikowi:
[adam-hitme@el3 public_html]$ wp user update michau.kwasiborski --user_email=michau.kwasiborski@gmail-google.com
Success: Updated user 6.
Zmiana hasła użytkownika
Jeśli chcemy nadać własne hasło np. MojeNoweSilneHaslo123
użytkownikowi Wordpress michau.kwasiborski
użyjmy do tego opcji wp user update
i parametru --user_pass=
.
[adam-hitme@el3 public_html]$ wp user update michau.kwasiborski --user_pass=MojeNoweSilneHaslo123
Success: Updated user 6.
Znaki specjalne w haśle. Jeśli w naszym haśle używasz znaków specjalnych jak ^@#$%^&*() itd.
to najlepiej podaj je w parametrze za pomocą pojedyńczych cudzysłowów '
czyli --user_pass='MojeHaslo!@#$'
. Masz wtedy pewność że znaki specjalne nie zostaną przejęte do interpretacji przez wiersz poleceń.
Od teraz możemy logować się do kokpitu Wordpress nowym hasłem użytkownika.
Usuwanie użytkownika Wordpress
Jeśli chcemy usunąć dane konto uzytkownika z naszego Wordpress stosujemy wp user delete
. Zostaniemy poproszeni o potwierdzenie czy usunąć wszystkie połączone posty z danym kontem użytkownika.
[adam-hitme@el3 public_html]$ wp user delete michau.kwasiborski
--reassign parameter not passed. All associated posts will be deleted. Proceed? [y/n] y
Success: Removed user 6 from https://mojewp.hmcloud.pl.
Search & Replace
Bardzo przydatną funkcją jest wyszukanie i zamiana jednego wyrażenia na drugie w całej bazie Wordpress. Przydatne jest to np. podczas ręcznej migracji, zmiany domeny gdy chcemy zmienić adresy URL linków czy obrazków na stronie.
wp search-replace http://staradomena.pl http://nowadomena.pl
Pamiętaj! Wykonaj kopię zapasową bazy danych poleceniem wp db export
zanim zaczniesz stosować wymiany fraz na bazie Wordpress. Może Ci to zaoszczędzić kłopotów jeśli popełnisz jakiś błąd.
Harmonogram Wordpress
Do testowania Harmonogramu zdarzeń czyli Wordpress CRON służy polecenie wp cron test
, z kolei do wyświetlenia listy wszystkich zaplanowanych zdarzeń w naszym Wordpress możemy użyć polecenia wp cron event list
. W ten sposób możemy sprawdzić czy harmonogram zdarzeń działa poprawnie i zadania są realizowane.
[adam-hitme@el3 public_html]$ wp cron event list
+------------------------------------+---------------------+----------------------+------------+
| hook | next_run_gmt | next_run_relative | recurrence |
+------------------------------------+---------------------+----------------------+------------+
| litespeed_task_imgoptm_pull | 2022-06-22 05:56:44 | 17 seconds | 1 minute |
| litespeed_task_lqip | 2022-06-22 05:56:44 | 17 seconds | 1 minute |
| wp_privacy_delete_old_export_files | 2022-06-22 06:04:43 | 8 minutes 16 seconds | 1 hour |
| wp_update_user_counts | 2022-06-22 08:53:01 | 2 hours 56 minutes | 12 hours |
| wpseo-reindex | 2022-06-22 09:25:56 | 3 hours 29 minutes | 1 day |
| wp_https_detection | 2022-06-22 17:04:43 | 11 hours 8 minutes | 12 hours |
| wp_version_check | 2022-06-22 17:04:43 | 11 hours 8 minutes | 12 hours |
| wp_update_plugins | 2022-06-22 17:04:43 | 11 hours 8 minutes | 12 hours |
| wp_update_themes | 2022-06-22 17:04:43 | 11 hours 8 minutes | 12 hours |
| ao_cachechecker | 2022-06-22 17:19:59 | 11 hours 23 minutes | 12 hours |
| recovery_mode_clean_expired_keys | 2022-06-23 05:04:43 | 23 hours 8 minutes | 1 day |
| wp_scheduled_delete | 2022-06-23 05:06:37 | 23 hours 10 minutes | 1 day |
| delete_expired_transients | 2022-06-23 05:06:37 | 23 hours 10 minutes | 1 day |
| wp_scheduled_auto_draft_delete | 2022-06-23 05:06:38 | 23 hours 10 minutes | 1 day |
| wpseo_ryte_fetch | 2022-06-27 09:25:56 | 5 days 3 hours | 1 week |
| wp_site_health_scheduled_check | 2022-06-29 05:04:43 | 6 days 23 hours | 1 week |
+------------------------------------+---------------------+----------------------+------------+
Zdarzenia harmonogramu mają swoją następną datę wykonania. Ciekawym poleceniem jest wp cron event run --due-now
, które nakazuje wykonać się teraz wszystkim zdarzeniom w Harmonogramie. W ten sposób możemy testować działanie zadań, które są wpisane do harmonogramu Wordpress CRON.
Aktualizacja Wordpress Core
Jeśli chcemy zaktualizować silnik Wordpress, możemy to wykonać bezpośrednio z wp-cli poleceniem wp core update
, które zaktualizuje nam nasz Wordpress do najnowszej wersji.
Przydatne komendy wp-cli
Aktualna instancja Wordpress.
Aby upewnić się że pracujemy z tą instalacją Wordpress, która odpowiada naszej domenie. Sprawdzajmy czy przypadkiem nie weszliśmy do innego katalogu i zarządzamy nie tym Wordpress, którym chcemy. Aby mieć pewność użyjmy do tego skumulowanego polecenia wp option get home && wp option get siteurl
.
[adam-hitme@el3 public_html]$ wp option get home && wp option get siteurl
https://mojewp.hmcloud.pl
https://mojewp.hmcloud.pl
Ścieżka do wp-config.php
Pozyskanie aktualnej ścieżki do pliku wp-config.php użyć wp config path
.
[adam-hitme@el3 public_html]$ wp config path
/home/adam/domains/mojewp.hmcloud.pl/public_html/wp-config.php
Parametry do bazy danych.
Jeśli chcemy wyświetlić parametry łączenia się do bazy danych takie jak host, baza danych, hasło - możemy wykorzystać do tego wp-cli z opcją wp config get
, która wyświetli nam tabelę z wartościami z pliku wp-config.php
.
Wygenerowanie testowych wpisów na blogu
Jeśli potrzebujemy wygenerować w celach testowych np. puste wpisy na blogu to możemy szybko wykonać to jednym poleceniem wp post generate
gdzie za ilość takich wpisów odpowiada parametr --count=
.
[adam-hitme@el3 public_html]$ wp post generate --count=10
Generating posts 100% [============================================] 0:00 / 0:00
Jeśli chcemy aby każdy post zawierał paragrafy tekstu w postaci Lorem ipsum możemy do tego wykorzystać serwis http://loremipsum.net i jego publicznie dostępne darmowe API. Stosujemy wtedy połączone polecenie takie jak na przykładzie: curl http://loripsum.net/api/4 | wp post generate --post_content --count=10
[adam-hitme@el3 public_html]$ curl http://loripsum.net/api/4 | wp post generate --post_content --count=10
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1592 0 1592 0 0 10337 0 --:--:-- --:--:-- --:--:-- 10270
Generating posts 100% [===========================================] 0:00 / 0:00
WP-CLI. Generowanie automatycznych wpisów za pomocą loripsum.net.
Wyczysczenie Wordpress
Ciekawym poleceniem jest wp site empty
, które czyści nasz Wordpress ze wszystkich Wpisów, Komentarzy pozostawiając konfigurację oraz konta użytkowników.
Przydatne jeśli chcemy wyczyściś nasz Wordpress z treści.
Wykonaj wp db export
przed tą operacją, gdyż stracisz całą treść z bazy danych.
Jak zregenerować rozmiary obrazów
Odświeżenie rozmiaru obrazów jest przydatne jeśli zmieniamy Motyw Wordpress na inny. W tym celu zamiast instalować dodatkowe wtyczki lub zmieniać rozmiary ręcznie - możemy posłużyć się wygodnie wp-cli do odświeżenia nowych rozmiarów. Służy do tego polecenie wp media regenerate
.
Przy czym używając dodatkowego parametru --yes
nie będziemy musieli dodatkowo potwierdzać rozpoczęcia operacji.
wp media regenerate --yes
W zależności od ilości obrazów proces może potrwać dłuższą chwilę.
Natomiast jeśli chcemy aby Wordpress odświeżył rozmiary tylko dla konkretnych obrazów, podajemy ich ID
w poleceniu.
wp media regenerate 7 13 101 256
W tym przypadku zregenerują się rozmiary dla obrazków o ID: 7, 13, 101 oraz 256.
Jeżeli chcesz aby odświeżony zostały wyłącznie jeden rozmiar, podaj jego nazwę jako parametr --image_size=
wp media regenerate --image_size=large
Natomiast jeśli chcesz odświeżyć jedynie brakujące obrazki wykorzystaj parametr --only-missing
.
Usuwanie SPAM komentarzy
Jeśli mamy w naszym Wordpress dużą ilość komentarzy oznaczonych jako SPAM możemy je wszystki usunąć jednym poleceniem.
Do wyświetlenia komentarzy oznaczonych jako SPAM służy polecenie wp comment list --status=spam
[adam-hitme@el3 public_html]$ wp comment list --status=spam
+------------+-----------------+---------------------+------------------+-----------------------+-------------------------+
| comment_ID | comment_post_ID | comment_date | comment_approved | comment_author | comment_author_email |
+------------+-----------------+---------------------+------------------+-----------------------+-------------------------+
| 45 | 0 | 2022-06-22 07:51:28 | spam | | |
| 44 | 0 | 2022-06-22 07:51:27 | spam | | |
| 43 | 0 | 2022-06-22 07:51:26 | spam | | |
| 42 | 0 | 2022-06-22 07:51:25 | spam | | |
| 41 | 0 | 2022-06-22 07:51:24 | spam | | |
| 40 | 0 | 2022-06-22 07:51:23 | spam | | |
| 39 | 0 | 2022-06-22 07:51:22 | spam | | |
| 38 | 0 | 2022-06-22 07:51:21 | spam | | |
| 37 | 0 | 2022-06-22 07:51:20 | spam | | |
| 36 | 0 | 2022-06-22 07:51:18 | spam | | |
| 35 | 0 | 2022-06-22 07:51:05 | spam | | |
| 1 | 1 | 2022-03-15 05:04:41 | spam | A WordPress Commenter | wapuu@wordpress.example |
+------------+-----------------+---------------------+------------------+-----------------------+-------------------------+
Natomiast do usunięcia wszystkich tych komentarzy, które są oznaczone w systemie jako SPAM używamy wp comment delete
, a dokładniej skumulowanego polecenia wp comment delete $(wp comment list --status=spam --format=ids)
.
[adam-hitme@el3 public_html]$ wp comment delete $(wp comment list --status=spam --format=ids)
Success: Trashed comment 45.
Success: Trashed comment 44.
Success: Trashed comment 43.
Success: Trashed comment 42.
Success: Trashed comment 41.
Success: Trashed comment 40.
Success: Trashed comment 39.
Success: Trashed comment 38.
Success: Trashed comment 37.
Success: Trashed comment 36.
Success: Trashed comment 35.
Success: Trashed comment 1.
To tyle.
Wszystkie możliwości wp-cli? Jeśli tylko nie podamy żadnych parametrów w poleceniu - wyświetli się nam pomoc, wypisująca wszystkie możliwe operacje i dostępne opcje. To samo tyczy się jeśli popełnimy błąd w składni polecenia, zostanie nam zasugerowana prawidłowa składnia polecenia. Jeśli chcemy uzyskać pomoc dotyczącą wszystkich możliwości funkcji wp-cli wraz z przykładami, używamy wp help <komenda>
np. wp help comment
.