W poprzednim wpisie było o komendach wp-cli służących do instalacji WordPress. Dziś pójdziemy o krok dalej i utworzymy skrypt instalujący i wstępnie konfigurujący WordPress, ulubiony motyw oraz kilka wtyczek.
Wymaganie wstępne
Oczywiście musimy posiadać serwer z dostępem SSH 🙂
Na serwerze musi być zainstalowane wp-cli.
Przed uruchomieniem skryptu musimy znać nazwę bazy danych, użytkownika bazy danych oraz jego hasło.
Jeśli jeszcze nie mamy utworzonej bazy danych – z przypisanym użytkownikiem i jego hasłem – to musimy ją utworzyć.
Za pomocą klienta mysql
podłączamy się do serwera baz danych:
mysql -uroot -p
Po podaniu hasła, tworzymy bazę danych oraz użytkownika – nadając mu prawa do utworzonej bazy.
create database DBNAME; grant all on DBNAME.* to 'DBUSER'@'localhost' identified by 'DBPASS'; flush privileges;
Skrypt instalacyjny – wersja podstawowa
W podstawowej wersji skrypt będzie instalował WordPress ze zmienionym prefiksem tabel w bazie danych, ulubiony motyw, kilka niezbędnych wtyczek oraz dokonywał kliku innych ustawień. Hasło administratora WordPress zostanie wygenerowane i wypisane na ekranie po zakończeniu instalacji.
Skrypt uruchamiamy z katalogu w którym chcemy zainstalować WordPress.
#!/usr/bin/env bash PLUGINY=(autodescription classic-editor ewww-image-optimizer) clear # Sprawdzamy czy WP-CLI jest zainstalowane if ! [ -x "$(command -v wp)" ]; then echo 'Error: wp-cli nie jest zainstalowane.' >&2 exit 1 fi # Dane od usera read -p "URL strony: " url read -p "Tytuł Strony: " title read -p "Nazwa administratora WP:" admin_user read -p "E-mail administratora WP:" admin_email read -p "Nazwa bazy danych: " dbname read -p "Użytkownik bazy danych: " dbuser read -p "Hasło do bazy danych: " dbpass read -p "Prefix tabel (wp_): " dbprefix admin_pass=$(mcookie) echo "W porządku. Rozpoczynam instalację strony $title pod adresem $url" wp core download wp core config --dbname=$dbname --dbuser=$dbuser --dbpass=$dbpass --dbprefix=$dbprefix --extra-php <<PHP define( 'DISALLOW_FILE_EDIT', true ); PHP wp core install --url=$url --title="$title" --admin_user=$admin_user --admin_password=$admin_pass --admin_email=$admin_email wp language core install pl_PL wp site switch-language pl_PL # usunięcie domyślnych pluginów i motywów wp plugin delete hello akismet wp theme delete twentysixteen twentyseventeen twentynineteen # instalacja motywu oraz pluginów wp theme install generatepress --activate wp plugin install ${PLUGINY[@]} --activate # Inne wp option delete blogdescription wp option update timezone_string "Europe/Warsaw" # Podsumowanie echo "" echo "" echo "DB: $db" echo "DBUSER: $dbuser" echo "DBPASS: $dbpass" echo "" echo "URL: $url" echo "Login administratora: $admin_user" echo "Hasło: $admin_pass" echo ""
Listę automatycznie instalowanych pluginów definiuje linia:
PLUGINY=(autodescription classic-editor ewww-image-optimizer)
Podajmemy slug plugina czyli ostatnią część adresu do strony. W skrypcie instalowane są pluginy:
- The SEO Framework – adres: https://pl.wordpress.org/plugins/autodescription/
- Klasyczny Edytor – adres: https://pl.wordpress.org/plugins/classic-editor/
- EWWW Image Optimizer – adres: https://pl.wordpress.org/plugins/ewww-image-optimizer/
Rozbudowa o dodatkowe możliwości – kilka przykładów
Oczywiście skrypt możemy łatwo rozbudować i dostosować do swoich potrzeb. Poniżej kilka praktycznych przykładów.
Tworzenie motywu potomnego (child theme), przykładowo
wp scaffold child-theme nazwa-child-theme --parent_theme=generatepress
Ustawienie permalinków
wp rewrite structure '/%postname%/' --hard
Usunięcie domyślnych widżetów z sidebara
wp widget delete search-2 recent-posts-2 archives-2 categories-2 meta-2
Wyłączenie komentarzy
wp option update disable_comments_options --format=json '{"disabled_post_types":["post","page","attachment"],"remove_everywhere":true,"permanent":false,"extra_post_types":false,"db_version":6}'
Dodawanie wpisów, stron, menu
Możemy pójść dalej, czyli usunąć domyślny wpis oraz stronę, utworzyć swoje strony oraz menu.
Usunięcie wpisu i przykładowej strony
wp post delete 1 2 --force
Utworzenie strony głównej oraz strony dla bloga
wp post create --post_type=page --post_title='Home' --post_status='publish' wp post create --post_type=page --post_title='Blog' --post_status='publish' wp option update show_on_front "page" wp option update page_on_front "4" wp option update page_for_posts "5"
Menu
wp menu create "Main Menu" wp menu location assign main-menu primary wp menu item add-post main-menu 4 --title="Home" wp menu item add-post main-menu 5 --title="Blog"
Jak widać wp-cli pozwala nam zaoszczędzić sporo czasu i nudnego klikania.
Super rzecz, dzięki 🙂
Drobny błąd w skrypcie. W linii
wp plugin delete hello-dolly akismet
powinno być
wp plugin delete hello akismet
Przy uruchomieniu oryginalnego skryptu wyskakuje błąd, że nie znaleziono pluginu hello-dolly. W poprzednim odcinku, gdzie były po kolei omawiane polecenia, było poprawnie.
Dziękuję 🙂 Poprawione.