Instalacja WordPress za pomocą skryptu wp-cli

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 hash wp 2>/dev/null; then
    echo "wp-cli nie jest zainstalowane"
    exit
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-dolly 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:

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.

Dodaj komentarz