Skip to content

WP-CLI: Zaawansowane zarządzanie WordPress z terminala

WP-CLI (WordPress Command Line Interface) to oficjalne narzędzie do zarządzania WordPress z terminala. Pozwala wykonywać operacje 10-100× szybciej niż przez panel wp-admin - idealne dla administratorów zarządzających wieloma stronami, deweloperów wdrażających updates lub agencji automatyzujących deployment.

📊 Poziom trudności

Zaawansowany ⭐⭐⭐

⏱️ Czas nauki: 1-2 godziny (podstawy) + praktyka 🛠️ Wymagane umiejętności: Podstawy Linux CLI, znajomość SSH, WordPress 💻 Narzędzia: SSH access (Joton), terminal, klucze SSH

Dlaczego WP-CLI zamiast wp-admin?

Przykład: Aktualizacja 50 wtyczek

Przez wp-admin (tradycyjnie):

  1. Zaloguj się do WordPress
  2. Przejdź do Wtyczki → Zainstalowane
  3. Zaznacz każdą wtyczkę (50 kliknięć)
  4. Wybierz "Aktualizuj" z menu
  5. Poczekaj na aktualizację każdej wtyczki pojedynczo
  6. Czas: 15-20 minut + ryzyko timeout

Przez WP-CLI:

bash
wp plugin update --all

Czas: 10-30 sekund (zależnie od liczby wtyczek)

Kiedy WP-CLI jest niezbędne?

  • Agencje WordPress - zarządzanie 10+ stronami klientów
  • Automatyzacja CI/CD - deployment przez GitHub Actions/GitLab CI
  • Migracje - zmiana domeny w bazie danych (search-replace)
  • Bulk operations - update 100 wtyczek po wykryciu CVE
  • Disaster recovery - reset hasła gdy nie masz dostępu do wp-admin
  • Performance testing - flush cache, regenerate thumbnails

Wymagania i dostęp SSH w Joton

1. Klucze SSH

WP-CLI wymaga połączenia SSH. Joton obsługuje SSH z autoryzacją przez klucze (hasła są wyłączone dla bezpieczeństwa).

Jeśli nie masz jeszcze kluczy SSH:

Zobacz: Generowanie kluczy SSH

Szybka weryfikacja:

bash
# Sprawdź czy masz klucz SSH
ls -la ~/.ssh/id_rsa.pub

Jeśli widzisz plik id_rsa.pub - masz klucz. Jeśli nie - wygeneruj według powyższego przewodnika.

2. Dodanie klucza SSH do panelu Joton

  1. Panel Joton → Witryny → Twoja domena → ZaawansowaneNarzędzia programistyczne
  2. Sekcja Klucze SSHDodaj klucz
  3. Skopiuj zawartość ~/.ssh/id_rsa.pub:
    bash
    cat ~/.ssh/id_rsa.pub
  4. Wklej w pole Klucz publicznyWyślij

Po dodaniu pierwszego klucza zobaczysz komendę logowania:

bash
ssh [email protected] -p22022

3. Test połączenia SSH

bash
# Skopiuj komendę z panelu Joton i wykonaj
ssh [email protected] -p22022

Jeśli widzisz:

Welcome to your hosting account!

✅ SSH działa poprawnie!

Jeśli widzisz błąd Permission denied:

  • Sprawdź czy dodałeś poprawny klucz publiczny (kończy się na .pub)
  • Sprawdź uprawnienia: chmod 600 ~/.ssh/id_rsa
  • Sprawdź czy klucz jest załadowany: ssh-add -l

Weryfikacja WP-CLI na Joton

Hosting Joton ma WP-CLI preinstalowane w każdym kontenerze. Sprawdźmy czy działa:

1. Zaloguj się przez SSH

bash
ssh [email protected] -p22022

2. Przejdź do katalogu WordPress

bash
# Lista wszystkich domen w Twoim koncie
ls -la

# Przejdź do katalogu domeny (zastąp twoja-domena.pl)
cd twoja-domena.pl

3. Sprawdź wersję WP-CLI

bash
wp --info

Prawidłowy output:

OS:       Linux 5.15.0-1064-aws #70~20.04.1-Ubuntu x86_64
Shell:    /bin/bash
PHP binary:  /usr/bin/php8.2
PHP version: 8.2.20
php.ini used:   /etc/php/8.2/cli/php.ini
MySQL binary:   /usr/bin/mysql
MySQL version:  mysql  Ver 8.0.37-0ubuntu0.20.04.3
SQL modes:
WP-CLI root dir:    /usr/local/bin
WP-CLI vendor dir:  /usr/local/bin/vendor
WP_CLI phar path:
WP-CLI packages dir:
WP-CLI cache dir:   /home/u123-abc/.wp-cli/cache
WP-CLI global config:
WP-CLI project config: /home/u123-abc/twoja-domena.pl/wp-cli.yml
WP-CLI version: 2.10.0

✅ WP-CLI jest gotowe do użycia!

4. Sprawdź status WordPress

bash
wp core version

Powinno pokazać wersję WordPress (np. 6.4.2).

💡 Alias dla wygody

Jeśli często pracujesz z WP-CLI, dodaj alias w ~/.bashrc:

bash
echo "alias wpcli='wp'" >> ~/.bashrc
source ~/.bashrc

# Teraz możesz używać krótszej komendy:
wpcli plugin list

Podstawy WP-CLI

Struktura komend

Wszystkie komendy WP-CLI mają format:

bash
wp <command> <subcommand> [--parameter=value]

Przykłady:

bash
wp plugin list                    # Lista wtyczek
wp plugin update akismet          # Update konkretnej wtyczki
wp plugin update --all            # Update wszystkich
wp core check-update              # Sprawdź dostępne aktualizacje WordPress

System pomocy

WP-CLI ma wbudowaną dokumentację:

bash
# Pomoc ogólna
wp help

# Pomoc dla konkretnej komendy
wp help plugin

# Pomoc dla subkomendy
wp help plugin install

# Lista wszystkich komend
wp cli cmd-dump

Najważniejsze komendy

KomendaCo robiPrzykład
wp coreZarządzanie WordPress corewp core update
wp pluginZarządzanie wtyczkamiwp plugin list
wp themeZarządzanie motywamiwp theme activate twentytwentyfour
wp userZarządzanie użytkownikamiwp user list
wp dbOperacje na bazie danychwp db export
wp cacheZarządzanie cachewp cache flush
wp search-replaceZamiana tekstu w baziewp search-replace 'old.com' 'new.com'
wp optionUstawienia WordPresswp option get siteurl

Zarządzanie wtyczkami i motywami

Lista wszystkich wtyczek

bash
# Podstawowa lista
wp plugin list

# Output:
# +------------------+----------+-----------+---------+
# | name             | status   | update    | version |
# +------------------+----------+-----------+---------+
# | akismet          | active   | available | 5.0     |
# | contact-form-7   | active   | none      | 5.8     |
# | woocommerce      | inactive | available | 8.2.1   |
# +------------------+----------+-----------+---------+

Filtry:

bash
# Tylko aktywne
wp plugin list --status=active

# Tylko nieaktywne
wp plugin list --status=inactive

# Tylko te wymagające update
wp plugin list --update=available

# Format JSON (do skryptów)
wp plugin list --format=json

Bulk update wszystkich wtyczek

bash
# Update wszystkich wtyczek
wp plugin update --all

# Output:
# Updating 'akismet' (5.0 -> 5.1)
# Downloading update from https://downloads.wordpress.org/plugin/akismet.5.1.zip...
# Unpacking the update...
# Installing the latest version...
# Removing the old version of the plugin...
# Plugin updated successfully.
# Success: Updated 1 of 1 plugins.

Z logowaniem do pliku:

bash
# Zapisz output do pliku (dla audytu)
wp plugin update --all | tee plugin-updates-$(date +%Y-%m-%d).log

Instalacja wtyczki z wordpress.org

bash
# Instaluj i aktywuj
wp plugin install wordfence --activate

# Instaluj konkretną wersję
wp plugin install woocommerce --version=8.2.0

# Instaluj z ZIP URL
wp plugin install https://downloads.wordpress.org/plugin/redis-cache.2.5.0.zip

Deinstalacja nieużywanych wtyczek

bash
# Lista nieaktywnych wtyczek
wp plugin list --status=inactive --field=name

# Usuń wszystkie nieaktywne (UWAGA: nieodwracalne!)
wp plugin delete $(wp plugin list --status=inactive --field=name)

Zarządzanie motywami

bash
# Lista motywów
wp theme list

# Aktywuj motyw
wp theme activate twentytwentyfour

# Instaluj nowy motyw
wp theme install astra --activate

# Usuń nieużywane motywy (zostaw tylko aktywny)
wp theme delete $(wp theme list --status=inactive --field=name)

Operacje na bazie danych

Export bazy danych

bash
# Backup do pliku
wp db export

# Output: Success: Exported to 'twoja-domena-2024-01-05-abc123.sql'.

# Custom nazwa pliku
wp db export backup-przed-update-$(date +%Y-%m-%d).sql

# Kompresja (oszczędność miejsca)
wp db export - | gzip > backup-$(date +%Y-%m-%d).sql.gz

Automatyczny backup przed każdą większą operacją:

bash
# Alias w ~/.bashrc
alias wpbackup='wp db export backup-$(date +%Y-%m-%d-%H%M%S).sql'

# Użycie:
wpbackup && wp plugin update --all

Import bazy danych

bash
# Import z pliku
wp db import backup-2024-01-05.sql

# Import z gzip
gunzip < backup-2024-01-05.sql.gz | wp db import -

Search-replace (migracje, zmiana domeny)

Scenariusz: Przeniosłeś stronę z staging.example.com na example.com

bash
# Zamień wszystkie wystąpienia URL w bazie
wp search-replace 'staging.example.com' 'example.com'

# Output:
# +-------------------+-----------+-----------+------+
# | Table             | Column    | Replacements | Type |
# +-------------------+-----------+-----------+------+
# | wp_options        | option_value | 2       | SQL  |
# | wp_posts          | post_content | 156     | SQL  |
# | wp_postmeta       | meta_value   | 89      | SQL  |
# +-------------------+-----------+-----------+------+
# Success: Made 247 replacements.

Tryb dry-run (test bez zmian):

bash
# Sprawdź co zostanie zamienione, ale NIE wykonuj zmian
wp search-replace 'old.com' 'new.com' --dry-run

Zamiana w specific tabelach:

bash
# Tylko w wp_posts i wp_postmeta
wp search-replace 'old.com' 'new.com' wp_posts wp_postmeta

⚠️ Serializowane dane

WordPress przechowuje niektóre dane w formacie serializowanym PHP. WP-CLI automatycznie to obsługuje, ale NIGDY nie używaj SQL UPDATE ręcznie - zniszczy serializację!

Bezpieczne: wp search-replace 'old' 'new'Niebezpieczne: UPDATE wp_options SET option_value = REPLACE(...)

Optymalizacja bazy danych

bash
# Optymalizuj wszystkie tabele
wp db optimize

# Napraw uszkodzone tabele
wp db repair

# Sprawdź rozmiar bazy
wp db size --human-readable

# Output: 156.8 MB

Cleanup niepotrzebnych danych

bash
# Usuń spam komentarze
wp comment delete $(wp comment list --status=spam --format=ids)

# Usuń trashed posty
wp post delete $(wp post list --post_status=trash --format=ids)

# Usuń transients (cache)
wp transient delete --all

# Usuń post revisions (zostaw tylko 5 ostatnich)
wp post delete $(wp post list --post_type=revision --posts_per_page=1000 --format=ids --post__not_in=$(wp post list --post_type=revision --posts_per_page=5 --format=ids))

Wykonanie custom SQL query

bash
# Query (read-only)
wp db query "SELECT COUNT(*) FROM wp_posts WHERE post_status='publish';"

# Output: 234

# Więcej złożone query
wp db query "SELECT post_type, COUNT(*) as count FROM wp_posts GROUP BY post_type;"

Zarządzanie użytkownikami

Lista użytkowników

bash
# Wszyscy użytkownicy
wp user list

# Output:
# +----+------------+------------------+---------------------+
# | ID | user_login | user_email       | role                |
# +----+------------+------------------+---------------------+
# | 1  | admin      | [email protected]| administrator       |
# | 2  | editor     | [email protected]   | editor              |
# +----+------------+------------------+---------------------+

# Tylko administratorzy
wp user list --role=administrator

# Format CSV (do Excel)
wp user list --format=csv > users-$(date +%Y-%m-%d).csv

Tworzenie nowego użytkownika

bash
# Utwórz administratora
wp user create john [email protected] --role=administrator --user_pass=VeryStrongPassword123!

# Utwórz redaktora
wp user create jane [email protected] --role=editor --display_name="Jane Doe"

Reset hasła (disaster recovery)

Scenariusz: Zapomniałeś hasła i nie masz dostępu do emaila

bash
# Reset hasła dla user ID 1
wp user update 1 --user_pass=NewSecurePassword456!

# Lub przez login
wp user update admin --user_pass=NewSecurePassword456!

Zmiana roli użytkownika

bash
# Awansuj do administratora
wp user set-role john administrator

# Degraduj do subscriber
wp user set-role badactor subscriber

Bulk operations na użytkownikach

bash
# Usuń wszystkich spammerów (subscriber bez postów)
wp user delete $(wp user list --role=subscriber --field=ID) --yes

# Lista użytkowników którzy się nigdy nie logowali (custom query)
wp db query "SELECT ID, user_login FROM wp_users WHERE ID NOT IN (SELECT DISTINCT user_id FROM wp_usermeta WHERE meta_key='last_login');"

Zaawansowane: Bulk operations

Update wszystkiego (WordPress + wtyczki + motywy)

bash
#!/bin/bash
# Plik: update-all.sh

echo "🔄 Starting full WordPress update..."

# Backup przed wszystkim
echo "📦 Creating database backup..."
wp db export backup-before-update-$(date +%Y-%m-%d-%H%M%S).sql

# Update WordPress core
echo "⬆️ Updating WordPress core..."
wp core update

# Update wszystkich wtyczek
echo "🔌 Updating all plugins..."
wp plugin update --all

# Update wszystkich motywów
echo "🎨 Updating all themes..."
wp theme update --all

# Flush cache
echo "🧹 Flushing cache..."
wp cache flush

# Verify
echo "✅ Verification:"
wp core version
wp plugin list --update=available
wp theme list --update=available

echo "✅ Update complete!"

Użycie:

bash
chmod +x update-all.sh
./update-all.sh

Cleanup performance (dla wolnych stron)

bash
#!/bin/bash
# Plik: cleanup-performance.sh

echo "🧹 Starting WordPress cleanup..."

# 1. Usuń transients
echo "Deleting transients..."
wp transient delete --all

# 2. Usuń stare revisions (zostaw 5 ostatnich)
echo "Deleting old revisions..."
REVISION_IDS=$(wp post list --post_type=revision --posts_per_page=1000 --offset=5 --format=ids)
if [ ! -z "$REVISION_IDS" ]; then
    wp post delete $REVISION_IDS --force
fi

# 3. Usuń spam comments
echo "Deleting spam comments..."
wp comment delete $(wp comment list --status=spam --format=ids) --force

# 4. Usuń trashed items
echo "Emptying trash..."
wp post delete $(wp post list --post_status=trash --format=ids) --force

# 5. Optymalizuj bazę
echo "Optimizing database..."
wp db optimize

# 6. Regeneruj thumbnails (jeśli używasz nowego rozmiaru)
echo "Regenerating thumbnails..."
wp media regenerate --yes

# 7. Flush cache
echo "Flushing all caches..."
wp cache flush
wp rewrite flush

echo "✅ Cleanup complete!"
wp db size --human-readable

WooCommerce bulk operations

bash
# Export wszystkich produktów do CSV
wp wc product list --format=csv > products-$(date +%Y-%m-%d).csv

# Bulk zmiana cen (10% discount na wszystko)
wp db query "UPDATE wp_postmeta SET meta_value = meta_value * 0.9 WHERE meta_key = '_regular_price';"

# Lista zamówień z ostatnich 7 dni
wp wc order list --after="$(date -d '7 days ago' +%Y-%m-%d)" --format=table

# Bulk zmiana statusu zamówień
wp wc order update $(wp wc order list --status=processing --format=ids) --status=completed

Automatyzacja z cron jobs

Daily database backup

Panel Joton → Zaawansowane → Narzędzia programistyczne → Cron jobs:

bash
# Komenda:
cd /home/u123-abc/twoja-domena.pl && /usr/local/bin/wp db export backup-daily-$(date +\%Y-\%m-\%d).sql && find . -name "backup-daily-*.sql" -mtime +7 -delete

# Harmonogram: Daily at 3:00 AM

Co robi:

  1. Przechodzi do katalogu WordPress
  2. Eksportuje bazę danych
  3. Usuwa backupy starsze niż 7 dni (oszczędność miejsca)

Weekly plugin updates (z emailem)

bash
# Komenda (zapisz jako ~/scripts/weekly-update.sh):
#!/bin/bash
DOMAIN="twoja-domena.pl"
EMAIL="[email protected]"
LOG="/tmp/wp-update-$(date +%Y-%m-%d).log"

cd /home/u123-abc/$DOMAIN

# Backup
wp db export backup-weekly-$(date +%Y-%m-%d).sql

# Update
wp plugin update --all > $LOG 2>&1
wp theme update --all >> $LOG 2>&1

# Wyślij email z raportem
mail -s "WordPress Update Report - $DOMAIN" $EMAIL < $LOG

# Cleanup
rm $LOG

Cron (każda niedziela o 2:00):

bash
0 2 * * 0 /home/u123-abc/scripts/weekly-update.sh

Monthly cleanup (transients, revisions)

bash
# Komenda:
cd /home/u123-abc/twoja-domena.pl && /usr/local/bin/wp transient delete --all && /usr/local/bin/wp db optimize

# Harmonogram: Monthly (1st day at 4:00 AM)

Custom scripty bash

Deployment script (staging → production)

bash
#!/bin/bash
# Plik: deploy-to-production.sh

STAGING_PATH="/home/u123-abc/staging.example.com"
PROD_PATH="/home/u123-abc/example.com"

echo "🚀 Starting deployment: staging → production"

# 1. Backup production
echo "📦 Backing up production database..."
cd $PROD_PATH
wp db export backup-pre-deploy-$(date +%Y-%m-%d-%H%M%S).sql

# 2. Export staging database
echo "📤 Exporting staging database..."
cd $STAGING_PATH
wp db export staging-export.sql

# 3. Search-replace URLs
echo "🔄 Updating URLs for production..."
wp search-replace 'staging.example.com' 'example.com' --export=production-ready.sql

# 4. Import to production
echo "📥 Importing to production..."
cd $PROD_PATH
wp db import $STAGING_PATH/production-ready.sql

# 5. Sync files (wtyczki/motywy)
echo "📁 Syncing files..."
rsync -av --exclude='wp-config.php' $STAGING_PATH/wp-content/ $PROD_PATH/wp-content/

# 6. Flush cache
echo "🧹 Flushing caches..."
wp cache flush
wp rewrite flush

# 7. Verify
echo "✅ Deployment complete! Verification:"
wp core version
wp plugin list --status=active | head -10

echo "🎉 Production is live!"

Migracja między hostingami

bash
#!/bin/bash
# Plik: migrate-wordpress.sh

OLD_URL="old-domain.com"
NEW_URL="new-domain.com"
BACKUP_NAME="migration-$(date +%Y-%m-%d).sql"

echo "🚚 Starting WordPress migration"

# 1. Export z starego hostingu
echo "1/5 Exporting database from old hosting..."
wp db export $BACKUP_NAME

# 2. Skopiuj plik do nowego hostingu
echo "2/5 Transferring files..."
scp $BACKUP_NAME [email protected]:/home/u123-abc/new-domain.com/

# 3. SSH do nowego hostingu i import
echo "3/5 Importing to new hosting..."
ssh [email protected] << EOF
cd /home/u123-abc/new-domain.com
wp db import $BACKUP_NAME
EOF

# 4. Search-replace URL
echo "4/5 Updating URLs..."
ssh [email protected] << EOF
cd /home/u123-abc/new-domain.com
wp search-replace '$OLD_URL' '$NEW_URL'
wp cache flush
EOF

# 5. Verify
echo "5/5 Verification..."
ssh [email protected] << EOF
cd /home/u123-abc/new-domain.com
wp option get siteurl
wp option get home
EOF

echo "✅ Migration complete!"

Troubleshooting

Error: bash: wp: command not found

Przyczyna: WP-CLI nie jest w PATH lub nie jest zainstalowane

Rozwiązanie:

bash
# Sprawdź pełną ścieżkę
which wp

# Jeśli zwraca /usr/local/bin/wp, użyj pełnej ścieżki:
/usr/local/bin/wp --info

# Lub dodaj alias
echo "alias wp='/usr/local/bin/wp'" >> ~/.bashrc
source ~/.bashrc

Error: Error: This does not seem to be a WordPress installation.

Przyczyna: Nie jesteś w katalogu głównym WordPress

Rozwiązanie:

bash
# Przejdź do katalogu z wp-config.php
cd /home/u123-abc/twoja-domena.pl

# Lub użyj --path
wp --path=/home/u123-abc/twoja-domena.pl plugin list

Error: PHP Fatal error: Allowed memory size exhausted

Przyczyna: Operacja wymaga więcej pamięci (np. import dużej bazy)

Rozwiązanie:

bash
# Zwiększ limit pamięci dla tej komendy
php -d memory_limit=512M /usr/local/bin/wp db import large-database.sql

# Lub permanentnie w wp-cli.yml
echo "php:
  memory_limit: 512M" > wp-cli.yml

Error: Error establishing a database connection

Przyczyna: WP-CLI nie może połączyć się z MySQL

Rozwiązanie:

bash
# Sprawdź dane w wp-config.php
grep DB_ wp-config.php

# Sprawdź czy MySQL działa
wp db check

# Test połączenia
wp db cli

Permission denied przy zapisie plików

Przyczyna: Niepoprawne uprawnienia do katalogów

Rozwiązanie:

bash
# Sprawdź uprawnienia
ls -la wp-content/

# Napraw uprawnienia (Joton)
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Przykłady praktyczne (real-world scenarios)

Scenariusz 1: Urgent security update dla 20 stron

Problem: Wykryto CVE w wtyczce Contact Form 7, musisz zaktualizować 20 stron klientów w ciągu godziny.

Rozwiązanie:

bash
#!/bin/bash
# Plik: bulk-security-update.sh

SITES=(
    "client1.com"
    "client2.com"
    "client3.com"
    # ... 17 więcej
)

for SITE in "${SITES[@]}"; do
    echo "🔄 Updating $SITE..."

    ssh [email protected] << EOF
        cd /home/u123-abc/$SITE
        wp db export backup-security-$(date +%Y-%m-%d).sql
        wp plugin update contact-form-7
        wp plugin list | grep contact-form-7
EOF

    echo "✅ $SITE updated!"
done

echo "🎉 All 20 sites updated!"

Scenariusz 2: Migracja z HTTP na HTTPS

Problem: Włączyłeś SSL, ale linki wewnętrzne nadal są http://

Rozwiązanie:

bash
# 1. Backup
wp db export backup-before-https.sql

# 2. Update URL w wp_options
wp option update home 'https://twoja-domena.pl'
wp option update siteurl 'https://twoja-domena.pl'

# 3. Search-replace w content
wp search-replace 'http://twoja-domena.pl' 'https://twoja-domena.pl'

# 4. Flush cache
wp cache flush

# 5. Verify (wszystkie URL powinny być https://)
wp db query "SELECT * FROM wp_options WHERE option_value LIKE '%http://%' LIMIT 10;"

Scenariusz 3: Przeniesienie WooCommerce store do subdomeny

Problem: Chcesz przenieść sklep z example.com/shop na shop.example.com

Rozwiązanie:

bash
# 1. Export z głównej domeny
cd /home/u123-abc/example.com
wp db export shop-export.sql

# 2. Kopiuj pliki do nowej subdomeny
rsync -av wp-content/ /home/u123-abc/shop.example.com/wp-content/

# 3. Import do subdomeny
cd /home/u123-abc/shop.example.com
wp db import shop-export.sql

# 4. Update URLs
wp search-replace 'example.com/shop' 'shop.example.com'
wp search-replace 'example.com' 'shop.example.com' --precise

# 5. Update permalinks
wp rewrite flush

# 6. WooCommerce specific
wp option update woocommerce_shop_page_id $(wp post list --post_type=page --name=shop --field=ID)

Integracja z funkcjami Joton

Wykorzystanie backupów Joton + WP-CLI

Scenariusz: Chcesz przywrócić stronę sprzed 3 dni (backup Joton) + dodatkowa weryfikacja przez WP-CLI

  1. Przywróć backup przez panel Joton:

    • Panel → Kopie zapasowe → Wybierz backup z 3 dni temu → Przywróć
  2. Weryfikacja przez WP-CLI:

bash
ssh [email protected]

# Sprawdź czy przywrócenie się powiodło
wp core verify-checksums
wp plugin verify-checksums --all

# Sprawdź wersje
wp core version
wp plugin list --fields=name,version,update

# Test czy admin działa
wp user list --role=administrator

Redis cache + WP-CLI

Jeśli włączyłeś Redis w panelu Joton:

bash
# Flush Redis cache
wp cache flush

# Sprawdź status Redis Object Cache plugin
wp plugin list | grep redis

# Test czy Redis działa
wp redis status

# Metrics
wp redis info

SSH keys rotation (security best practice)

bash
# Co 90 dni generuj nowy klucz SSH
ssh-keygen -t rsa -b 4096 -C "new-key-$(date +%Y-%m-%d)"

# Dodaj nowy klucz do panelu Joton
cat ~/.ssh/id_rsa_new.pub

# Testuj nowy klucz
ssh -i ~/.ssh/id_rsa_new [email protected]

# Jeśli działa, usuń stary klucz z panelu Joton

Następne kroki

Po opanowaniu WP-CLI możesz przejść do:

  1. CI/CD automatyzacja - GitHub Actions z WP-CLI deployment
  2. Custom WP-CLI commands - pisanie własnych komend dla powtarzalnych zadań
  3. Multi-site management - zarządzanie WordPress Multisite przez CLI
  4. Performance monitoring - połączenie WP-CLI z New Relic/DataDog

Przydatne linki

Powrót do: WordPress Know-How