🢂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.
- 1. Instalacja podstawowa
- 2. Konfiguracja wydajności i pamięci
- 3. Konfiguracja bezpieczeństwa
- 4. Podstawowe ustawienia WordPress
- 5. Zarządzanie treściami
- 6. Motywy i wtyczki
- 7. Menu i nawigacja
- 8. Kopia zapasowa
- 9. Dodatkowe optymalizacje wydajności
- Optymalizacja bazy danych WordPressa
- Optymalizacja mediów WordPressa
- Optymalizacja sesji i logowania WordPressa
- Zaawansowana optymalizacja wydajności WordPressa
- Optymalizacja bezpieczeństwa i wydajności WordPressa
- Czyszczenie i konserwacja WordPressa
- Monitoring i diagnostyka WordPressa
- Automatyzacja zadań CRON WordPressa
Poniżej znajduje się lista poleceń pogrupowanych 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 --dbuser=developer --dbpass=developer --locale=pl_PL --dbhost=localhost --dbname=NazwaBazy
# Instalacja WordPress
wp core install --admin_email=noreply@noreply.pl --admin_user=developer --admin_password=developer --url=https://JakisDev --title="Tytuł Strony"
# Ustawienia podstawowych adresów URL
wp config set WP_HOME 'https://JakisDev'
wp config set WP_SITEURL 'https://JakisDev'
2. Konfiguracja wydajności i pamięci
# Zwiększenie limitu pamięci
wp config set WP_MEMORY_LIMIT '1024M'
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 niedomyślnych wtyczek i motywu
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 /home/swami/www/_Wtyczki/_Do_Instalacji/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 /home/swami/www/_Wtyczki/_Do_Instalacji/elementor-pro.zip --activate
wp plugin install /home/swami/www/_Wtyczki/_Do_Instalacji/astra-addon-plugin.zip --activate
wp plugin install wp-mail-smtp --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
wp plugin install astra-import-export
wp plugin install wp-sweep
# 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
# 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
# Uwaga: Wyłączenie automatycznego osadzania wymaga dodania kodu do functions.php motywu
# (kod znajduje się poniżej w sekcji optymalizacji)
# 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 automatycznego osadzania
add_filter('embed_oembed_discover', '__return_false');
// 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.
Optymalizacja bazy danych WordPressa
# Optymalizacja tabel bazy danych
wp db optimize
# Naprawa tabel bazy danych
wp db repair
# Czyszczenie spamu i kosza
wp comment delete $(wp comment list --status=spam --format=ids)
wp post delete $(wp post list --post_status=trash --format=ids) --force
# Usuwanie nieużywanych tagów i kategorii
wp term delete $(wp term list post_tag --count=0 --format=ids) --taxonomy=post_tag
wp term delete $(wp term list category --count=0 --format=ids) --taxonomy=category
# Czyszczenie transientów (tymczasowych danych)
wp transient delete --all
Optymalizacja mediów WordPressa
# Regeneracja miniatur obrazów
wp media regenerate --yes
# Optymalizacja rozmiarów obrazów
wp config set BIG_IMAGE_SIZE_THRESHOLD 2560 --raw
wp config set JPEG_QUALITY 90 --raw
# Wyłączenie generowania niepotrzebnych rozmiarów obrazów
wp option update medium_large_size_w 0
wp option update medium_large_size_h 0
# Ustawienie maksymalnego rozmiaru uploadu
wp config set WP_MEMORY_LIMIT '512M'
wp config set MAX_EXECUTION_TIME 300 --raw
Optymalizacja sesji i logowania WordPressa
# Ustawienie czasu wygaśnięcia sesji (w sekundach - 7 dni)
wp config set SESSION_COOKIE_LIFETIME 604800 --raw
# Optymalizacja logowania
wp config set COOKIE_DOMAIN "'.$(wp option get siteurl | sed 's|https\?://||')'" --raw
wp config set COOKIEPATH "'$(wp option get siteurl | sed 's|https\?://[^/]*||')'" --raw
# Wyłączenie przechowywania haseł w przeglądarce
wp config set FORCE_SSL_ADMIN true --raw
Zaawansowana optymalizacja wydajności WordPressa
# Optymalizacja zapytań do bazy danych
wp config set WP_USE_EXT_MYSQL false --raw
wp config set DB_CHARSET 'utf8mb4'
wp config set DB_COLLATE 'utf8mb4_unicode_ci'
# Optymalizacja RSS i Atom feeds
wp option update posts_per_rss 10
wp option update rss_use_excerpt 1
# Wyłączenie niepotrzebnych funkcji WordPress
wp option update enable_app 0
wp option update enable_xmlrpc 0
wp option update blog_public 1
# Optymalizacja wyszukiwania
wp config set WP_ALLOW_REPAIR false --raw
Optymalizacja bezpieczeństwa i wydajności WordPressa
# Ukrycie wersji WordPress
wp config set WP_DEBUG false --raw
wp config set SCRIPT_DEBUG false --raw
# Optymalizacja nagłówków bezpieczeństwa
wp config set FORCE_SSL_ADMIN true --raw
wp config set WP_ACCESSIBLE_HOSTS "'*.wordpress.org,*.w.org'" --raw
# Ograniczenie prób logowania
wp config set WP_FAIL2BAN_LOG_PINGBACKS true --raw
wp config set WP_FAIL2BAN_LOG_PASSWORD_REQUEST true --raw
Czyszczenie i konserwacja WordPressa
# Usuwanie nieużywanych wtyczek i motywów
wp plugin delete $(wp plugin list --status=inactive --field=name) 2>/dev/null || true
wp theme delete $(wp theme list --status=inactive --field=name) 2>/dev/null || true
# Czyszczenie logów
wp config set WP_DEBUG_LOG false --raw
find wp-content -name "*.log" -delete 2>/dev/null || true
# Optymalizacja autoload w bazie danych
wp db query "UPDATE wp_options SET autoload = 'no' WHERE option_name LIKE '_transient_%'"
wp db query "UPDATE wp_options SET autoload = 'no' WHERE option_name LIKE '_site_transient_%'"
# Usuwanie starych rewizji (starszych niż 30 dni)
wp post delete $(wp post list --post_type=revision --format=ids --posts_per_page=-1 --date_query='[{"before":"30 days ago"}]') --force
# Usuwanie komentarzy spam
for id in $(wp comment list --status=spam --format=ids); do wp comment delete $id --force; done
# Usuwanie postów z kosza
for id in $(wp post list --post_status=trash --format=ids); do wp post delete $id --force; done
# Alternatywnie, jeśli masz dużo elementów do usunięcia:
# wp comment list --status=spam --format=ids | xargs -r wp comment delete --force
# wp post list --post_status=trash --format=ids | xargs -r wp post delete --force
Monitoring i diagnostyka WordPressa
# Sprawdzenie stanu WordPress
wp core verify-checksums
wp plugin verify-checksums --all
# Analiza wydajności
wp db size --human-readable
wp option list --autoload=on --format=table
# Sprawdzenie błędów w logach
wp config get WP_DEBUG_LOG
wp eval "error_log('Test log entry');"
# Sprawdzenie konfiguracji serwera
wp eval "phpinfo();" | grep -E "(memory_limit|max_execution_time|upload_max_filesize)"
Automatyzacja zadań CRON WordPressa
# Konfiguracja własnego CRON-a
wp config set DISABLE_WP_CRON true --raw
# Dodanie zadania do systemowego cron-a (należy wykonać jako root)
echo "*/15 * * * * wget -q -O - https://$(wp option get siteurl)/wp-cron.php?doing_wp_cron >/dev/null 2>&1" >> /tmp/wp-cron-job
# crontab /tmp/wp-cron-job
# Sprawdzenie zaplanowanych zadań
wp cron event list
wp cron schedule list