🢂Instalacja i wstępna konfiguracja WordPressa za pomocą WP‑CLI (update)
WP-CLI to narzędzie, które znacząco ułatwia instalację i wstępną konfiguracje WordPressa.
WP-CLI to interfejs wiersza poleceń dla WordPressa, który umożliwia szybkie i efektywne zarządzanie instalacją, konfiguracją oraz codziennymi zadaniami związanymi z utrzymaniem strony. W tym wpisie znajdziesz skrypt instalacji i konfiguracji WordPressa przy użyciu WP-CLI, zaczynając od pobrania podstawowych plików, aż po instalację wtyczek i tworzenie menu.
Co ten skrypt robi?
Ten skrypt bash automatyzuje proces instalacji i konfiguracji WordPressa.
Instrukcja użycia:
- Skopiuj poniższy skrypt do pliku, na przykład
setup_wordpress.sh
w katalogupublic_html
. - Upewnij się, że masz uprawnienia do wykonania skryptu:
chmod +x setup_wordpress.sh
. - Uruchom skrypt:
./setup_wordpress.sh
. - Oczywiście dostosuj zmienne do swoich potrzeb :)
Kompletny skrypt instalacyjny WordPress
Poniżej znajduje się gotowy skrypt, który możesz skopiować i wkleić do pliku bash:
#!/bin/bash
# Zmienne konfiguracyjne - dostosuj do swoich potrzeb
DB_NAME="NazwaBazy"
DB_USER="user"
DB_PASS="pass"
WP_URL="https://JakisDev.pl"
WP_TITLE="Tytuł Strony"
WP_ADMIN_USER="login"
WP_ADMIN_PASSWORD="haslo"
WP_ADMIN_EMAIL="noreply@noreply.pl"
WP_LOCALE="pl_PL"
# Ścieżka do pliku ZIP Elementor Pro (po zakupie)
ELEMENTOR_PRO_ZIP="/sciezka/do/pobranego/elementor-pro.zip"
# 1. Pobieranie WordPressa
wp core download --locale=$WP_LOCALE
# 2. Tworzenie bazy danych
mysql -u root -p -e "CREATE DATABASE $DB_NAME;"
# 3. Tworzenie pliku konfiguracyjnego
wp config create --dbname=$DB_NAME --dbuser=$DB_USER --dbpass=$DB_PASS --locale=$WP_LOCALE
# 4. Konfiguracja wydajności i pamięci
wp config set WP_MEMORY_LIMIT '512M'
wp config set WP_MAX_MEMORY_LIMIT '1024M'
wp config set COMPRESS_CSS true --raw
wp config set COMPRESS_SCRIPTS true --raw
wp config set WP_CACHE true --raw
wp config set WP_ENVIRONMENT_TYPE "'production'" --raw
wp config set CONCATENATE_SCRIPTS true --raw
wp config set IMAGE_EDIT_OVERWRITE true --raw
wp config set JPEG_QUALITY 90 --raw
wp config set WP_POST_REVISIONS 2 --raw
wp config set DISABLE_WP_CRON true --raw
# 5. Konfiguracja bezpieczeństwa
wp config set WP_DEBUG false --raw
wp config set WP_DEBUG_LOG false --raw
wp config set WP_DEBUG_DISPLAY false --raw
wp config set DISALLOW_FILE_EDIT true --raw
wp config set DISALLOW_FILE_MODS true --raw
wp config set AUTOMATIC_UPDATER_DISABLED true --raw
# 6. Instalacja WordPressa
wp core install --url=$WP_URL --title="$WP_TITLE" --admin_user=$WP_ADMIN_USER --admin_password=$WP_ADMIN_PASSWORD --admin_email=$WP_ADMIN_EMAIL
# 7. Ustawienia podstawowych adresów URL
wp config set WP_HOME $WP_URL
wp config set WP_SITEURL $WP_URL
# 8. Konfiguracja podstawowych ustawień WordPress
wp rewrite structure '/%postname%/'
# 9. Usuwanie domyślnych treści
wp post delete 1 2 --force
# 10. Instalacja i aktywacja motywu
wp theme install astra --activate
wp theme delete $(wp theme list --status=inactive --field=name)
# 11. Instalacja i aktywacja wtyczek
wp plugin install elementor --activate
# Instalacja Elementor Pro (wymagany zakupiony plik ZIP)
wp plugin install $ELEMENTOR_PRO_ZIP --activate
wp plugin install wp-mail-smtp --activate
wp plugin install contact-form-7 --activate
wp plugin install disable-comments --activate
wp plugin install remove-category-url --activate
wp plugin install seo-by-rank-math --activate
wp plugin install litespeed-cache --activate
wp plugin install astra-import-export --activate
wp plugin install wp-sweep --activate
wp option update disable_comments_settings '{"remove_everywhere":1}'
# 12. Tworzenie podstawowych stron
wp post create --post_type=page --post_status=publish --post_title="Home" --porcelain
wp post create --post_type=page --post_status=publish --post_title="Kontakt" --porcelain
# 13. Tworzenie kategorii
wp term create category "Aktualności" --slug='news'
wp option update default_category "Aktualności"
# 14. Generowanie przykładowych treści (opcjonalnie)
wp post generate --count=5 --post_type=page --post_status=publish
wp post generate --count=5 --post_type=post --post_status=publish
# 15. Tworzenie i konfiguracja menu
# Tworzenie menu
wp menu create "Menu Główne"
wp menu create "Menu Stopki"
wp menu create "Menu Szybki kontakt"
wp menu create "Menu Regulaminy"
# Przypisywanie menu do lokalizacji
wp menu location assign "Menu Główne" primary
wp menu location assign "Menu Stopki" footer_menu
wp menu location assign "Menu Szybki kontakt" mobile_menu
wp menu location assign "Menu Regulaminy" footer_links
# Dodawanie elementów do menu głównego
wp menu item add-custom "Menu Główne" "Home" '/'
wp menu item add-custom "Menu Główne" "Kontakt" '/kontakt'
# Dodawanie regulaminów do menu
wp post create --post_type=page --post_status=publish --post_title="Polityka prywatności" --porcelain | xargs -I {} wp menu item add-post "Menu Regulaminy" {}
wp post create --post_type=page --post_status=publish --post_title="Pliki cookie" --porcelain | xargs -I {} wp menu item add-post "Menu Regulaminy" {}
# 16. Tworzenie kopii zapasowej bazy danych
wp db export --add-drop-table backup.sql
# Dodatkowe optymalizacje wydajności
wp config set SAVEQUERIES false --raw
wp config set EMPTY_TRASH_DAYS 7 --raw
wp config set AUTOSAVE_INTERVAL 300 --raw
wp config set WP_HTTP_BLOCK_EXTERNAL false --raw
# Wyłączenie niepotrzebnych zapytań XML-RPC i pingbacków
wp option update default_ping_status 'closed'
wp option update default_pingback_flag 0
wp option update use_trackback 0
# Wyłączenie automatycznego osadzania z innych witryn
wp option update embed_autourls 0
# Optymalizacja Heartbeat API (zmniejszenie częstotliwości odpytywania serwera)
wp config set AUTOSAVE_INTERVAL 300 --raw
wp config set WP_POST_REVISIONS 3 --raw
wp config set EMPTY_TRASH_DAYS 7 --raw
# Dodatkowe ustawienia kompresji i wydajności
wp config set ENFORCE_GZIP true --raw
wp config set COMPRESS_CSS true --raw
wp config set COMPRESS_SCRIPTS true --raw
wp config set CONCATENATE_SCRIPTS true --raw
wp config set SAVEQUERIES false --raw
# Wyłączenie emoji i dashicons dla odwiedzających witrynę (można dodać do functions.php motywu)
echo "<?php
// Wyłączenie emoji
function disable_emojis() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
}
add_action( 'init', 'disable_emojis' );
// Wyłączenie dashicons na frontend dla niezalogowanych użytkowników
function wpdocs_dequeue_dashicon() {
if (current_user_can('edit_posts')) {
return;
}
wp_deregister_style('dashicons');
}
add_action('wp_enqueue_scripts', 'wpdocs_dequeue_dashicon');
?>" > wp-content/themes/astra/functions-optimization.php
# Dodanie wpisu o ładowaniu tego pliku do functions.php motywu Astra
echo "<?php
// Załadowanie optymalizacji
require_once( get_template_directory() . '/functions-optimization.php' );
?>" >> wp-content/themes/astra/functions.php
# Optymalizacja plików .htaccess dla Apache (jeśli używany)
cat > .htaccess << 'EOL'
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# BEGIN Kompresja GZIP
<IfModule mod_deflate.c>
# Kompresja dla różnych typów plików
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/json
</IfModule>
# END Kompresja GZIP
# BEGIN Nagłówki buforowania
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 2 days"
</IfModule>
# END Nagłówki buforowania
EOL
echo "Konfiguracja WordPressa zakończona! Możesz teraz przejść do swojej strony: $WP_URL"
Polecenia pogrupowane tematycznie
Jeśli wolisz wykonywać polecenia krok po kroku lub dostosować tylko wybrane elementy, poniżej znajdziesz te same polecenia pogrupowane tematycznie:
1. Instalacja podstawowa
# Pobieranie WordPress z polską lokalizacją
wp core download --locale=pl_PL
# Tworzenie nowej bazy danych
mysql -u root -p -e "CREATE DATABASE NazwaBazy;"
# Tworzenie pliku konfiguracyjnego wp-config.php
wp config create --dbname=NazwaBazy --dbuser=user --dbpass=pass --locale=pl_PL
# Instalacja WordPress
wp core install --url=https://JakisDev.pl --title="Tytuł Strony" --admin_user=login --admin_password=haslo --admin_email=noreply@noreply.pl
# Ustawienia podstawowych adresów URL
wp config set WP_HOME 'https://JakisDev.pl'
wp config set WP_SITEURL 'https://JakisDev.pl'
2. Konfiguracja wydajności i pamięci
# Zwiększenie limitu pamięci
wp config set WP_MEMORY_LIMIT '512M'
wp config set WP_MAX_MEMORY_LIMIT '1024M'
# Optymalizacja zasobów i pamięci podręcznej
wp config set COMPRESS_CSS true --raw
wp config set COMPRESS_SCRIPTS true --raw
wp config set WP_CACHE true --raw
wp config set WP_ENVIRONMENT_TYPE "'production'" --raw
wp config set CONCATENATE_SCRIPTS true --raw
# Optymalizacja obrazów
wp config set IMAGE_EDIT_OVERWRITE true --raw
wp config set JPEG_QUALITY 90 --raw
# Optymalizacja obsługi bazy danych
wp config set WP_POST_REVISIONS 2 --raw
# lub całkowite wyłączenie rewizji:
# wp config set WP_POST_REVISIONS false --raw
# Konfiguracja CRON
wp config set DISABLE_WP_CRON true --raw
3. Konfiguracja bezpieczeństwa
# Wyłączenie trybu debugowania
wp config set WP_DEBUG false --raw
wp config set WP_DEBUG_LOG false --raw
wp config set WP_DEBUG_DISPLAY false --raw
# Wyłączenie edytora plików
wp config set DISALLOW_FILE_EDIT true --raw
wp config set DISALLOW_FILE_MODS true --raw
# Wyłączenie automatycznych aktualizacji rdzenia
wp config set AUTOMATIC_UPDATER_DISABLED true --raw
4. Podstawowe ustawienia WordPress
# Konfiguracja permalinków
wp rewrite structure '/%postname%/'
# Ustawienia lokalizacji
wp option update timezone_string Europe/Warsaw
wp option update time_format H:i
wp option update start_of_week 1
# Konfiguracja uploadów
wp option update uploads_use_yearmonth_folders 0
# Konfiguracja RSS - ustawienie, czy w RSS powinny być pełne treści, czy tylko ich fragment
wp option update rss_use_excerpt 1
5. Zarządzanie treściami
# Usuwanie domyślnych treści
wp post delete 1 2 --force
# Tworzenie podstawowych stron
wp post create --post_type=page --post_status=publish --post_title="Home" --porcelain
wp post create --post_type=page --post_status=publish --post_title="Kontakt" --porcelain
# Tworzenie kategorii
wp term create category "Aktualności" --slug='news'
wp option update default_category "Aktualności"
# Generowanie przykładowych treści
wp post generate --count=5 --post_type=page --post_status=publish
wp post generate --count=5 --post_type=post --post_status=publish
6. Motywy i wtyczki
# Usuwanie nieaktywnych wtyczek i domyślnych
wp plugin deactivate hello jetpack
wp plugin delete hello jetpack
wp plugin deactivate $(wp plugin list --status=inactive --field=name)
wp plugin delete $(wp plugin list --status=inactive --field=name)
# Instalacja i aktywacja motywu
wp theme install astra --activate
wp theme delete $(wp theme list --status=inactive --field=name)
wp theme install /sciezka/do/pobranego/theme_wh.zip --activate
# Instalacja i aktywacja wtyczek
wp plugin install elementor --activate
# Instalacja Elementor Pro (wymagany zakupiony plik ZIP)
# Uwaga: Musisz najpierw zakupić Elementor Pro i pobrać plik ZIP
wp plugin install /sciezka/do/pobranego/elementor-pro.zip --activate
# Po instalacji należy aktywować licencję w panelu WordPress: Elementor > Licencja
wp plugin install wp-mail-smtp --activate
wp plugin install contact-form-7 --activate
wp plugin install disable-comments --activate
wp plugin install remove-category-url --activate
wp plugin install seo-by-rank-math --activate
wp plugin install litespeed-cache --activate
wp plugin install astra-import-export --activate
wp plugin install wp-sweep --activate
# Konfiguracja komentarzy
wp option update disable_comments_settings '{"remove_everywhere":1}'
7. Menu i nawigacja
# Tworzenie menu
wp menu create "Menu Główne"
wp menu create "Menu Stopki"
wp menu create "Menu Szybki kontakt"
wp menu create "Menu Regulaminy"
# Przypisywanie menu do lokalizacji
wp menu location assign "Menu Główne" primary
wp menu location assign "Menu Stopki" footer_menu
wp menu location assign "Menu Szybki kontakt" mobile_menu
wp menu location assign "Menu Regulaminy" footer_links
# Dodawanie elementów do menu głównego
wp menu item add-custom "Menu Główne" "Home" '/'
wp menu item add-custom "Menu Główne" "Kontakt" '/kontakt'
# Dodawanie regulaminów do menu
wp post create --post_type=page --post_status=publish --post_title="Polityka prywatności" --porcelain | xargs -I {} wp menu item add-post "Menu Regulaminy" {}
wp post create --post_type=page --post_status=publish --post_title="Pliki cookie" --porcelain | xargs -I {} wp menu item add-post "Menu Regulaminy" {}
8. Kopia zapasowa
# Tworzenie kopii zapasowej bazy danych
wp db export --add-drop-table backup.sql
9. Dodatkowe optymalizacje wydajności
# Wyłączenie niepotrzebnych zapytań XML-RPC i pingbacków
wp option update default_ping_status 'closed'
wp option update default_pingback_flag 0
wp option update use_trackback 0
# Wyłączenie automatycznego osadzania z innych witryn
wp option update embed_autourls 0
# Optymalizacja Heartbeat API (zmniejszenie częstotliwości odpytywania serwera)
wp config set AUTOSAVE_INTERVAL 300 --raw
wp config set WP_POST_REVISIONS 3 --raw
wp config set EMPTY_TRASH_DAYS 7 --raw
# Dodatkowe ustawienia kompresji i wydajności
wp config set ENFORCE_GZIP true --raw
wp config set COMPRESS_CSS true --raw
wp config set COMPRESS_SCRIPTS true --raw
wp config set CONCATENATE_SCRIPTS true --raw
wp config set SAVEQUERIES false --raw
# Wyłączenie emoji i dashicons dla odwiedzających witrynę (można dodać do functions.php motywu)
echo "<?php
// Wyłączenie emoji
function disable_emojis() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
}
add_action( 'init', 'disable_emojis' );
// Wyłączenie dashicons na frontend dla niezalogowanych użytkowników
function wpdocs_dequeue_dashicon() {
if (current_user_can('edit_posts')) {
return;
}
wp_deregister_style('dashicons');
}
add_action('wp_enqueue_scripts', 'wpdocs_dequeue_dashicon');
?>" > wp-content/themes/astra/functions-optimization.php
# Dodanie wpisu o ładowaniu tego pliku do functions.php motywu Astra
echo "<?php
// Załadowanie optymalizacji
require_once( get_template_directory() . '/functions-optimization.php' );
?>" >> wp-content/themes/astra/functions.php
# Optymalizacja plików .htaccess dla Apache (jeśli używany)
cat > .htaccess << 'EOL'
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# BEGIN Kompresja GZIP
<IfModule mod_deflate.c>
# Kompresja dla różnych typów plików
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/json
</IfModule>
# END Kompresja GZIP
# BEGIN Nagłówki buforowania
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 2 days"
</IfModule>
# END Nagłówki buforowania
EOL
Te ustawienia i konfiguracje pomogą w optymalizacji WordPressa, zmniejszając obciążenie serwera i przyspieszając działanie strony. Użycie poleceń WP-CLI znacząco przyspiesza proces konfiguracji i eliminuje potrzebę ręcznego konfigurowania wielu ustawień poprzez panel administracyjny.