Przejdź do głównej zawartości

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.

kurs wp-cli

informacja

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/
wskazówka

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.
wskazówka

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.
wskazówka

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'.
wskazówka

Ł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 | [email protected] | 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.

Parametry:
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 [email protected] --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 | [email protected] | 2022-06-22 05:16:42 | editor,administrator |
| 1 | mqtzmttxq | admin.wp | [email protected] | 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 | [email protected] | 2022-06-22 05:16:42 | editor |
| 1 | mqtzmttxq | admin.wp | [email protected] | 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

Składnia:
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 [email protected]
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.
wskazówka

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
ostrzeżenie

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

wordpress wp-cli 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.

uwaga

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
uwaga

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 | [email protected] |
+------------+-----------------+---------------------+------------------+-----------------------+-------------------------+

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.

informacja

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.

hosting wordpress