Kurs "WordPress: Pierwsze kroki" (na dobry początek)

Dziś chciałbym Wam przedstawić narzędzie do zarządzania stronami opartymi o system CMS WordPress za pomocą komend tekstowych – i choć może to wydawać się mniej wygodne niż klasyczne zarządzanie za pomocą panelu, to w wielu sytuacjach pozwala znacznie usprawnić pracę z tym CMSem…

WP-CLI: Interfejs wiersza poleceń do WordPressa

Wprawdzie korzyści z zastosowania WP-CLI wydają się tym większe, im więcej mamy stron na WordPressie pod swoim nadzorem, to nawet w przypadku tylko jednej strony warto rozważyć wdrożenie tego narzędzia – czy to do zautomatyzowania niektórych „standardowych czynności” np. za pomocą skryptów uruchamianych z CRONa, czy też do (awaryjnej) modyfikacji w bazie danych (WP-CLI współpracuje również z WordPress Multisite).

Za pomocą WP-CLI możemy tak naprawdę uruchomić kompletną, działającą stronę – w raz z zawartością, co pewnie zainteresuje różnej maści magików od zaplecza (SEO), bo dzięki WP-CLI i relatywnie prostemu skryptowi możemy stawiać kolejne gotowe strony w krótkim czasie, w sposób całkowicie automatyczny.

Sam z tego narzędzia wprawdzie korzystam głównie do późniejszego zarządzania stanami, to zdarza mi się czasem korzystać ze skryptu, który wykorzystując możliwości WP-CLI, pozwala mi szybko przygotować szkielet strony (podstawowe ustawienia, wtyczki) pod kolejną stronę WWW.

Instalacja WP-CLI

Instalacja jest prosta (choć są też inne, alternatywne metody), i przedstawię ją na przykładzie serwera VPS (lub Raspberry Pi).

Zaczynamy od pobrania skryptu na nasz serwer:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Od razu też przeniesiemy pobrany skrypt do katalogu ze skryptami użytkownika, dzięki czemu będziemy mogli w prosty sposób go wywołać z dowolnej lokalizacji:

chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Od razu możemy też sprawdzić, czy wszystko działa:

patryk@webinsider:~$ wp --info
PHP binary: /usr/bin/phpX
PHP version: X.X.XX-X+deb8u1
php.ini used: /etc/phpX/cli/php.ini
WP-CLI root dir: phar://wp-cli.phar
WP-CLI packages dir: /home/patryk/.wp-cli/packages/
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 0.23.1

Instalacja WordPressa za pomocą WP-CLI

Kolejnym krokiem może być utworzenie nowej strony (jeśli chcecie zarządzać istniejącą stroną, to oczywiście ten krok należy pominąć), co – jeśli mamy już skonfigurowany webserwer, utworzoną bazę danych, oraz przygotowany katalog na pliki strony – sprowadza się do kilku prostych poleceń.

Podczas pracy z WP-CLI wszystkie polecenia (poza „info” przedstawionym powyżej) wykonujemy będąc w katalogu, w którym chcemy zainstalować, lub w którym znajduje się już zainstalowany WordPress, którym chcemy zarządzać.

W innym przypadku każdorazowo należy do polecenia dodać parametr ze ścieżka do WordPressa, którym chcemy zarządzać:

--path=/var/www/webinsider/html/

Np.:

wp core version --path=/var/www/webinsider/html/

Przechodzimy do katalogu, w którym chcemy zainstalować WordPressa i korzystamy z polecenia:

wp core download 

Choć przynajmniej część z Was raczej będzie zainteresowana WordPressem w wersji PL:

wp core download --locale=pl_PL

Można też wskazać ścieżkę, jeśli chcemy zainstalować WordPressa do innego katalogu niż ten, w którym się znajdujemy:

wp core download --locale=pl_PL --path=/var/www/jakiś/katalog/

Przykładowe pobieranie:

patryk@webinsider:/var/www/webinsider/html$ wp core download --locale=pl_PL
Downloading WordPress 4.5.3 (pl_PL)...
md5 hash verified: f7ec1f9dd8fe670c698bc8389e83f11e
Success: WordPress downloaded.

Po instalacji szybka konfiguracja bazy danych:

wp core config --dbname=nazwa_bazy_danych --dbuser=użytkownik_bazy_danych --dbpass=hasło_do_bazy_danych

Opcjonalnie możecie też ustawić m.in. prefiks tabel a bazie danych, czy host, na którym działa serwer MySQL:

wp core config --dbname=nazwa_bazy_danych --dbuser=użytkownik_bazy_danych --dbpass=hasło_do_bazy_danych --dbhost=localhost --dbprefix=wp_

W tym momencie możecie wejść na stronę, i za pomocą standardowego kreatora instalacji skonfigurować podstawowe informacje o stronie, ale możecie tez skorzystać z odpowiedniego polecenia:

wp core install --url=webinsider.pl --title="Webinsider.pl" --admin_user=patryk --admin_password=jakieś_hasło [email protected]

I to tyle, WordPress zainstalowany i skonfigurowany…

Praca z WP-CLI, czyli podstawowe polecenia

Ale możliwości WP-CLI na instalacji WordPressa się nie kończą – wręcz przeciwnie, one tu dopiero się zaczynają… I nawet nie zamierzam próbować przedstawić Wam wszystkich komend – te znajdziecie w dokumentacji, choć postaram się przedstawić Wam kilka, z których sam najczęściej korzystam (tak by zainteresować Was tematem).

Aktualizacja WP-CLI

Zaczynamy od polecenia może niezwiązanego bezpośrednio z pracą „na WordPressie”, ale nawet najlepsze narzędzia czasem trzeba aktualizować, dzięki czemu nie tylko otrzymujemy usprawnienia już istniejących funkcjonalności, ale i całkiem nowe:

wp cli update

Ew. jako root:

sudo wp cli update --allow-root

Aktualizacja WordPressa

Aktualną wersję WordPressa sprawdzicie za pomocą polecenia:

wp core version

Aktualizację – jeśli potrzebna – przeprowadzamy za pomocą kolnych 2 poleceń (pliki, i ew. baza danych – czasem wymagane):

wp core update
wp core update-db

Praca z motywami

Za pomocą WP-CLI możemy też zarządzać motywami – od instalacji, przez aktywację, po odinstalowanie…

Lista motywów:

wp theme list

Wyszukiwanie motywów w repozytorium WordPress.org:

wp theme search SŁOWA KLUCZOWE

Instalacja motywu:

wp theme install NazwaMotywu

Aktywacja motywu:

wp theme activate NazwaMotywu

Odinstalowanie (usunięcie) motywu:

wp theme uninstall NazwaMotywu

Aktualizacja wybranego motywu:

wp theme update NazwaMotywu

Aktualizacja wszystkich motywów:

wp theme update --all

Do tego możemy sprawdzić status motywów (aktywne, nieaktywne, wersja):

wp theme status

Child Themes, czyli motywy potomne

Jak być może już niektórzy z Was wiedzą, osobiście preferuje pracę na tzw. motywach potomnych, dzięki czemu jakieś „niestandardowe modyfikacje” nie przepadają podczas aktualizacji bazowego motywu.

Za pomocą WP-CLI możemy też i proces tworzenia takiego motywu zautomatyzować – w tym celu możemy skorzystać z komendy scaffold:

wp scaffold MotywBazowy MotywPotomny --parent_theme=motywbazowy --theme_name="Motyw Potomny" --author="Patryk z Webinsider.pl" --activate

Praca z wtyczkami

Skoro możemy zarządzać motywami, to zapewne dla nikogo z Was nie będzie niespodzianka, że to samo możemy robić w przypadku wtyczek.

Lista wtyczek:

wp plugin list

Wyszukiwanie wtyczek w repozytorium WordPress.org:

wp plugin search "SŁOWA KLUCZOWE"

Instalacja wtyczki:

wp plugin install NazwaWtyczki

Aktywacja wtyczki:

wp plugin active NazwaWtyczki

De(z)aktywacja wtyczki:

wp plugin deactivate NazwaWtyczki

Odinstalowanie (usunięcie) wtyczki:

wp plugin uninstall NazwaWtyczki

Aktualizacja wybranej wtyczki:

wp plugin update NazwaWtyczki

Aktualizacja wszystkich motywów:

wp plugin update --all

Do tego możemy sprawdzić status wtyczek (aktywne, nieaktywne, wersja):

wp plugin status

Inne przydatne polecenia

O pracę z multimediami (plikami), czy tworzeniem postów nawet nie będę zahaczał – to temat rzeka, ale jedno polecenie chciałbym Wam przedstawić, bo jest proste, a może się przydać:

wp media regenerate

Lub w wersji z automatycznym potwierdzeniem:

wp media regenerate --yes

Jak zapewne się domyślacie, za pomocą tego polecenia odświeżycie (wygenerujecie ponownie) miniatury (mniejsze i większe) wgranych plików graficznych.

Możemy też za pomocą WP-CLI wywołać WordPressowego CRONa (WP-CRON):

wp cron event run --due-now

Co przydaje się zwłaszcza wtedy, gdy rezygnujemy ze standardowego modelu pracy (aktywność na stronie), na rzecz czegoś bardziej przewidywalnego…

Praca z bazą danych

Za pomocą WP-CLI mamy również możliwość (m.in.) pracy z bazą danych – od importu i eksportu, po zmianę zawartości.

Eksport (kopia zapasowa) bazy danych do pliku:

wp db export /ścieżka/do/zapisania/pliku/nazwa_pliku.sql

import (przywracanie) bazy danych z pliku:

wp db import /ścieżka/do/pliku/nazwa_pliku.sql

Możemy też mienić adres strony w ustawieniach WordPressa:

wp option update home https://nowy.webinsider.pl
wp option update siteurl https://nowy.webinsider.pl

Choć zapewne wtedy nie obejdzie się również bez zmian w innych miejscach w bazie danych – coś podobnego, do tego co można wykonać opisywanym kilka dni temu skryptem:

wp search-replace 'stara zawartość' 'nowa zawartość'

Ew. możecie sprawdzić zmiany „na sucho”, czyli tylko za symulować działanie polecenia:

wp search-replace --dry-run 'stara zawartość' 'nowa zawartość'

Można też dokonać modyfikacji w konkretnej tabeli:

wp search-replace 'stara zawartość' 'nowa zawartość' tabela

Lub nawet bardziej precyzyjnie – konkretnej kolumnie, w konkretnej tabeli:

wp search-replace 'stara zawartość' 'nowa zawartość' tabela --include-columns=kolumna

Np.:

wp search-replace --dry-run 'stara wartość' 'nowa wartość' wp_posts --include-columns=post_content

WP-CLI z uprawnieniami innego użytkownika, np. roota

Jeśli z jakichś przyczyn zajdzie potrzeba wykonania komendy z uprawnieniami użytkownika „root”, to w przypadku WP-CLI nie wystarczy dodać „sudo” z przodu komendy. Więcej – polecenie nie wykona się z takimi uprawnieniami nawet jeśli będziecie zalogowani jako „root” do systemu.

Oczywiście jest to podyktowane względami bezpieczeństwa, i uwzględniono i taką sytuację. W takim przypadku musimy dodać do polecenia parametr:

--allow-root

Przykładowe polecenie:

sudo wp db export /ścieżka/do/zapisania/pliku/nazwa_pliku.sql --allow-root

Alternatywnie – podaje za dokumentacją – możecie wykonać polecenie w ramach konta innego użytkownika za pomocą takiego polecenia:

sudo -u NAZWA_UŻYTKOWNIKA -i -- wp KOMENDA

W każdym razie zachęcam do samodzielnego przetestowania WP-CLI, bo – mam nadzieję, że widać – warto…

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Kurs "WordPress: Pierwsze kroki" (bezpłatna lekcja)
Patryk
Kurs "WordPress: Pierwsze kroki" (bezpłatna lekcja)