🢂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.

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