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…
Spis treści w artykule
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ń.
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
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…
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01
Wygląda na rozwiązanie dla osób, które lubią podłubać się z kodem :)
Z jednej strony tak, ale np. instalacja WP to chwila, a całość można upakować w jakiś skrypt i jednym poleceniem (ew. z kilkoma zmiennymi/parametrami) stawiasz nowego WordPressa, z podstawową konfiguracją (podstawowe ustawienia, motyw bazowy, wtyczki). Aktualizacja wtyczek czy samego WP to też chwila…
Ale jak ktoś woli za pomocą interfejsu graficznego zarządzać wieloma stronami, to może skorzystać np. z WordPress Jetpack (opisywałem), InfiniteWP (opisywałem), czy MainWP (czeka na opisanie).
A jak to zainstalować pod windowsem? Bo się wysypuje…
Nigdy nie instalowałem pod Windowsem, bo nie miałem takiej potrzeby (dla mnie Windows to system operacyjny na stacji roboczej, a nie na serwerze WWW). Ale wydaje się, że najlepiej za pomocą Composera, a cała procedura jest opisana w pomocy na WordPress.org