WP-CLI – zarządzanie WordPressem z linii komend

Spis treści

Wprowadzenie – czym jest WP-CLI i jak działa

WP-CLI (WordPress Command Line Interface) to oficjalne narzędzie wiersza poleceń dla WordPressa, które pozwala zarządzać instalacjami WordPress bez potrzeby używania przeglądarki internetowej. Zamiast klikać przez interfejs graficzny, wykonujesz operacje za pomocą prostych komend w terminalu.

To potężne narzędzie stworzone przez społeczność WordPressa, które znacząco przyspiesza pracę administratorów i developerów. WP-CLI pozwala na zarządzanie wszystkimi aspektami WordPressa – od instalacji i aktualizacji po zarządzanie treścią, użytkownikami i bazą danych.

WP-CLI działa na zasadzie poleceń tekstowych, które wykonują konkretne operacje na instalacji WordPress. Każde polecenie może mieć dodatkowe parametry, które precyzują jego działanie. Na przykład zamiast logować się do panelu admina i aktualizować wtyczki klikając, możesz użyć jednej komendy w terminalu.

Dlaczego zarządzanie przez terminal bywa szybsze niż przez panel

Zarządzanie WordPressem przez terminal oferuje znaczące przewagi nad tradycyjnym interfejsem webowym, szczególnie w określonych scenariuszach.

1. Szybkość wykonania operacji masowych

Aktualizacja 50 wtyczek przez panel admina może zająć 10-15 minut (klikanie, czekanie na przeładowanie strony). Za pomocą WP-CLI wykonasz tę samą operację w kilkadziesiąt sekund jedną komendą.

2. Automatyzacja powtarzalnych zadań

Zamiast ręcznie wykonywać te same czynności każdego dnia/tygodnia, możesz stworzyć skrypty, które automatycznie wykonują je za Ciebie. To idealne rozwiązanie dla rutynowych zadań administracyjnych.

3. Praca zdalna przez SSH

Nie potrzebujesz dostępu do przeglądarki ani VPN. Wystarczy połączenie SSH z serwerem, aby zarządzać wieloma instalacjami WordPress z jednego miejsca.

4. Mniejsze zużycie zasobów

Operacje przez CLI zużywają znacznie mniej pamięci RAM i mocy procesora niż interfejs webowy, co jest kluczowe na słabszych serwerach lub podczas wykonywania zasobożernych operacji.

5. Precyzja i kontrola

Terminal daje Ci pełną kontrolę nad parametrami operacji. Możesz precyzyjnie określić, które elementy mają zostać zaktualizowane, które opcje mają być zastosowane, i jak mają być obsłużone błędy.

Instalacja WP-CLI krok po kroku

Instalacja WP-CLI jest prosta i wymaga tylko kilku kroków. Poniżej znajdziesz instrukcję dla najpopularniejszych systemów operacyjnych.

Wymagania systemowe:

  • PHP 5.6+ (zalecane PHP 7.4+)
  • WordPress 3.7+
  • Dostęp do terminala/SSH na serwerze
  • Uprawnienia do wykonania komend w katalogu WordPress

Instalacja na Linux/macOS:

Krok 1: Pobranie pliku PHAR

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Krok 2: Sprawdzenie czy plik działa

php wp-cli.phar --info

Krok 3: Nadanie uprawnień do wykonania

chmod +x wp-cli.phar

Krok 4: Przeniesienie do PATH

sudo mv wp-cli.phar /usr/local/bin/wp

Krok 5: Weryfikacja instalacji

wp --info

Instalacja na Windows:

Opcja 1: Przez Composer

composer require wp-cli/wp-cli

Opcja 2: Pobranie pliku PHAR

  1. Pobierz plik wp-cli.phar z oficjalnej strony
  2. Zmień nazwę pliku na wp.bat
  3. Dodaj lokalizację pliku do systemowej zmiennej PATH
  4. Uruchom nowy terminal i sprawdź komendą: wp --info

Instalacja na hostingach współdzielonych:

Wiele hostingu oferuje WP-CLI preinstalowane. Jeśli nie, możesz spróbować instalacji w katalogu użytkownika:

# Pobierz do katalogu domowego
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

# Nadaj uprawnienia
chmod +x wp-cli.phar

# Utwórz alias w .bashrc lub .bash_profile
echo 'alias wp="~/wp-cli.phar"' >> ~/.bashrc

# Przeładuj konfigurację
source ~/.bashrc

Najczęściej używane komendy (aktualizacje, wtyczki, użytkownicy, import/export)

WP-CLI oferuje setki komend, ale poniżej przedstawiam te najczęściej używane w codziennej pracy z WordPressem.

Zarządzanie aktualizacjami:

Sprawdzenie dostępnych aktualizacji:

wp core check-update
wp plugin list --update=available
wp theme list --update=available

Aktualizacja rdzenia WordPress:

# Aktualizacja do najnowszej wersji
wp core update

# Aktualizacja do konkretnej wersji
wp core update 5.8.1

Aktualizacja wszystkich wtyczek:

# Aktualizacja wszystkich wtyczek
wp plugin update --all

# Aktualizacja wybranych wtyczek
wp plugin update woocommerce elementor jetpack

Aktualizacja wszystkich motywów:

wp theme update --all

Zarządzanie wtyczkami:

Lista zainstalowanych wtyczek:

# Podstawowa lista
wp plugin list

# Szczegółowa lista z informacjami o aktualizacjach
wp plugin list --status=active --format=table

Instalacja wtyczki:

# Instalacja z repozytorium WordPress
wp plugin install woocommerce

# Instalacja z pliku ZIP
wp plugin install /path/to/plugin.zip

# Instalacja z GitHub
wp plugin install https://github.com/user/plugin/archive/master.zip

Aktywacja/dezaktywacja wtyczki:

# Aktywacja
wp plugin activate woocommerce

# Dezaktywacja
wp plugin deactivate woocommerce

# Usunięcie
wp plugin uninstall woocommerce

Zarządzanie użytkownikami:

Lista użytkowników:

wp user list --fields=ID,user_login,user_email,roles

Tworzenie nowego użytkownika:

wp user create janek janek@example.com --role=editor --user_pass=haslo123

Zmiana roli użytkownika:

wp user set-role janek administrator

Resetowanie hasła:

wp user update janek --user_pass=nowehaslo

Import/Export treści:

Eksport wszystkich treści:

# Eksport wszystkich postów
wp export --dir=/path/to/exports

# Eksport konkretnych typów treści
wp export --post_type=post,page --dir=/path/to/exports

Import treści:

wp import /path/to/export.xml --authors=create

Zarządzanie bazą danych:

Tworzenie kopii zapasowej bazy:

wp db export backup_$(date +%Y%m%d).sql

Optymalizacja bazy danych:

wp db optimize

Wyszukiwanie i zamiana w bazie danych:

wp search-replace 'staryadres.com' 'nowyadres.com'

Automatyzacja zadań administracyjnych i aktualizacji

Jedną z największych zalet WP-CLI jest możliwość automatyzacji powtarzalnych zadań. Poniżej przedstawiam praktyczne przykłady skryptów i harmonogramów.

Tworzenie prostych skryptów bash:

Skrypt do cotygodniowej aktualizacji:

#!/bin/bash
# weekly_update.sh

echo "Rozpoczynam cotygodniową aktualizację WordPress..."

# Przejdź do katalogu WordPress
cd /var/www/html

# Sprawdź aktualizacje rdzenia
echo "Sprawdzanie aktualizacji rdzenia WordPress..."
wp core check-update

# Zaktualizuj wtyczki
echo "Aktualizowanie wtyczek..."
wp plugin update --all

# Zaktualizuj motywy
echo "Aktualizowanie motywów..."
wp theme update --all

# Wyczyść cache
echo "Czyszczenie cache..."
wp cache flush

# Wyślij powiadomienie email
echo "Aktualizacja zakończona: $(date)" | mail -s "WordPress Weekly Update Complete" admin@example.com

Skrypt do tworzenia kopii zapasowych:

#!/bin/bash
# backup.sh

BACKUP_DIR="/backups/wordpress"
DATE=$(date +%Y%m%d_%H%M%S)
SITE_DIR="/var/www/html"

# Utwórz katalog kopii
mkdir -p $BACKUP_DIR/$DATE

# Kopia bazy danych
echo "Tworzenie kopii bazy danych..."
wp db export $BACKUP_DIR/$DATE/database.sql

# Kopia plików
echo "Tworzenie kopii plików..."
tar -czf $BACKUP_DIR/$DATE/files.tar.gz $SITE_DIR

# Usuń stare kopii (starsze niż 7 dni)
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;

echo "Kopia zapasowa zakończona: $BACKUP_DIR/$DATE"

Integracja z cron (harmonogram zadań):

Dodanie zadania cotygodniowej aktualizacji:

# Edytuj crontab
crontab -e

# Dodaj linię (uruchamianie co niedzielę o 2:00 nad ranem)
0 2 * * 0 /path/to/weekly_update.sh

Dodanie dziennych kopii zapasowych:

# Dodaj do crontab (codziennie o 3:00 nad ranem)
0 3 * * * /path/to/backup.sh

Zaawansowane skrypty z warunkami:

Inteligentna aktualizacja (tylko jeśli dostępne):

#!/bin/bash
# smart_update.sh

cd /var/www/html

# Sprawdź czy są dostępne aktualizacje
if wp core check-update | grep -q "available"; then
    echo "Dostępne aktualizacje rdzenia, aktualizuję..."
    wp core update
else
    echo "Brak aktualizacji rdzenia"
fi

# Sprawdź aktualizacje wtyczek
PLUGIN_UPDATES=$(wp plugin list --update=available --format=count)
if [ "$PLUGIN_UPDATES" -gt 0 ]; then
    echo "Dostępne $PLUGIN_UPDATES aktualizacji wtyczek, aktualizuję..."
    wp plugin update --all
else
    echo "Brak aktualizacji wtyczek"
fi

Zalety korzystania z WP-CLI – szybkość, precyzja, skrypty

WP-CLI oferuje liczne korzyści, które przekładają się na efektywność pracy i jakość zarządzania stronami WordPress.

1. Szybkość wykonania operacji

Operacje masowe, które przez interfejs webowy zajmują godziny, przez WP-CLI wykonujesz w minutach. Aktualizacja setek wtyczek na wielu stronach staje się zadaniem na kilka minut zamiast całego dnia pracy.

2. Precyzja i kontrola

Każda komenda oferuje precyzyjne parametry, które pozwalają na dokładne określenie zakresu operacji. Możesz filtrować według statusu, daty, autora i wielu innych kryteriów.

3. Możliwość automatyzacji

Skrypty powłoki pozwalają na tworzenie zautomatyzowanych workflow, które wykonują się bez Twojego udziału. To idealne rozwiązanie dla rutynowych zadań administracyjnych.

4. Zgodność z DevOps

WP-CLI doskonale integruje się z nowoczesnymi praktykami DevOps – CI/CD, konteneryzacją (Docker), i systemami zarządzania konfiguracją (Ansible).

5. Mniejsze zużycie zasobów

Operacje CLI zużywają znacznie mniej pamięci i mocy procesora niż interfejs webowy, co jest kluczowe na serwerach o ograniczonych zasobach.

6. Praca zdalna i wsadowa

Możesz zarządzać wieloma instalacjami WordPress z jednego miejsca, wykonując te same operacje na setkach stron jednocześnie.

7. Lepsze logowanie i debugowanie

WP-CLI oferuje szczegółowe logi operacji, co ułatwia diagnozowanie problemów i śledzenie historii zmian.

Wady i ograniczenia – dla kogo to nie jest narzędzie

Mimo licznych zalet, WP-CLI ma również swoje ograniczenia i nie jest idealnym rozwiązaniem dla każdego użytkownika WordPress.

1. Wymaga znajomości terminala

Podstawowa obsługa linii komend jest konieczna. Osoby przyzwyczajone wyłącznie do interfejsów graficznych mogą poczuć się niezręcznie przy pierwszym kontakcie z WP-CLI.

2. Brak podglądu wizualnego

Nie możesz zobaczyć jak zmiany wyglądają na stronie przed ich zatwierdzeniem. Wszystkie operacje są "ślepe" – wykonujesz je wiarze, że rezultat będzie zgodny z oczekiwaniami.

3. Ryzyko błędów

Błędnie wpisana komenda może spowodować poważne problemy – od usunięcia treści po awarii całej strony. Nie ma "kosza" ani możliwości cofnięcia zmian jednym kliknięciem.

4. Ograniczenia na hostingach współdzielonych

Wiele hostingów współdzielonych nie pozwala na pełne wykorzystanie potencjału WP-CLI z powodu ograniczeń w dostępie SSH i wykonywaniu komend.

5. Trudności z operacjami graficznymi

Zadania wymagające interakcji wizualnej (np. konfiguracja zaawansowanych ustawień wtyczki z interfejsem graficznym) są niemożliwe lub bardzo trudne przez WP-CLI.

6. Krzywa uczenia się

Chociaż podstawowe komendy są proste, zaawansowane operacje wymagają nauki składni, parametrów i dobrych praktyk.

Dla kogo WP-CLI nie jest idealnym rozwiązaniem:

  • Początkujący użytkownicy WordPress bez doświadczenia z terminalem
  • Osoby zarządzające tylko jedną, małą stroną
  • Użytkownicy hostingów współdzielonych z ograniczonym dostępem
  • Projektanci graficzni, którzy pracują głównie z wyglądem strony

Kto korzysta z WP-CLI – administratorzy, developerzy, agencje hostingowe

WP-CLI stało się standardowym narzędziem w wielu grupach profesjonalnych użytkowników WordPress. Poniżej przedstawiam profile użytkowników, którzy czerpią największe korzyści z tego narzędzia.

1. Administratorzy systemów i DevOps

Specjaliści odpowiedzialni za utrzymanie infrastruktury WordPress wykorzystują WP-CLI do:

  • Automatyzacji aktualizacji bezpieczeństwa
  • Monitorowania stanu wielu instalacji
  • Tworzenia skryptów disaster recovery
  • Integracji z systemami CI/CD

2. Developerzy WordPress

Programiści wykorzystują WP-CLI do:

  • Szybkiego tworzenia środowisk deweloperskich
  • Automatyzacji procesów wdrożeniowych
  • Zarządzania danymi testowymi
  • Integracji z lokalnymi środowiskami deweloperskimi

3. Agencje hostingowe

Firmy hostingowe używają WP-CLI do:

  • Zarządzania tysiącami instalacji klientów
  • Automatyzacji procesów migracyjnych
  • Monitorowania wydajności i bezpieczeństwa
  • Tworzenia narzędzi self-service dla klientów

4. Agencje interaktywne i marketingowe

Firmy zarządzające stronami klientów wykorzystują WP-CLI do:

  • Szybkiej aktualizacji wielu stron jednocześnie
  • Automatyzacji kopii zapasowych
  • Monitorowania stanu witryn klientów
  • Wdrażania zmian na wielu stronach

5. Zaawansowani użytkownicy WordPress

Osoby zarządzające własnymi, rozbudowanymi stronami wykorzystują WP-CLI do:

  • Optymalizacji wydajności
  • Zarządzania dużą ilością treści
  • Automatyzacji zadań administracyjnych
  • Tworzenia zaawansowanych kopii zapasowych

Integracja z systemami CI/CD i zarządzanie wieloma instalacjami

WP-CLI doskonale wpisuje się w nowoczesne praktyki deweloperskie i systemy automatyzacji. Poniżej przedstawiam jak można zintegrować WP-CLI z popularnymi narzędziami DevOps.

Integracja z GitHub Actions:

Przykładowy workflow do automatycznego wdrażania:

name: Deploy WordPress
on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    - name: Setup PHP
      uses: shivammathur/setup-php@v2
      with:
        php-version: '7.4'
        extensions: mbstring, xml, mysql
        coverage: none

    - name: Install WP-CLI
      run: |
        curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
        chmod +x wp-cli.phar
        sudo mv wp-cli.phar /usr/local/bin/wp

    - name: Deploy to production
      run: |
        # Połączenie z serwerem i wdrożenie zmian
        rsync -avz --exclude-from='.deployignore' . user@server:/var/www/html/

        # Uruchomienie komend WP-CLI na serwerze
        ssh user@server 'cd /var/www/html && wp plugin update --all && wp cache flush'

Integracja z Docker:

Dockerfile z WP-CLI:

FROM wordpress:latest

# Instalacja WP-CLI
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \
    chmod +x wp-cli.phar && \
    mv wp-cli.phar /usr/local/bin/wp

# Skrypt startowy
COPY entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh

ENTRYPOINT ["entrypoint.sh"]

docker-compose.yml z usługą WP-CLI:

version: '3.8'
services:
  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wp-content:/var/www/html/wp-content

  wp-cli:
    image: wordpress:cli
    volumes:
      - ./wp-content:/var/www/html/wp-content
    depends_on:
      - wordpress
      - db
    command: >
      sh -c "
      wp plugin install woocommerce --activate &&
      wp theme install storefront --activate &&
      wp user create admin admin@example.com --role=administrator --user_pass=admin123
      "

Zarządzanie wieloma instalacjami:

Skrypt do masowej aktualizacji:

#!/bin/bash
# mass_update.sh

SITES=(
    "/var/www/site1"
    "/var/www/site2"
    "/var/www/site3"
)

for site in "${SITES[@]}"; do
    echo "Przetwarzanie: $site"
    cd "$site"

    # Sprawdź aktualizacje
    wp core check-update
    wp plugin list --update=available

    # Wykonaj aktualizacje
    wp core update
    wp plugin update --all
    wp theme update --all

    # Wyczyść cache
    wp cache flush

    echo "Zakończono: $site"
    echo "---"
done

Zarządzanie przez Ansible:

---
- name: Manage WordPress sites
  hosts: wordpress_servers
  become: yes

  tasks:
    - name: Update WordPress core
      command: wp core update
      args:
        chdir: "{{ item.path }}"
      loop: "{{ wordpress_sites }}"

    - name: Update plugins
      command: wp plugin update --all
      args:
        chdir: "{{ item.path }}"
      loop: "{{ wordpress_sites }}"

    - name: Clear cache
      command: wp cache flush
      args:
        chdir: "{{ item.path }}"
      loop: "{{ wordpress_sites }}"

Monitorowanie i alerting:

Skrypt do monitorowania stanu stron:

#!/bin/bash
# monitor_sites.sh

SITES=(
    "https://site1.com"
    "https://site2.com"
    "https://site3.com"
)

for site in "${SITES[@]}"; do
    # Sprawdź czy strona odpowiada
    if curl -s -o /dev/null -w "%{http_code}" "$site" | grep -q "200"; then
        echo "✓ $site - OK"
    else
        echo "✗ $site - PROBLEM"

        # Wyślij alert
        echo "Problem z dostępnością strony: $site" | mail -s "Alert: WordPress Site Down" admin@example.com

        # Sprawdź logi błędów
        # (tutaj logika sprawdzania logów)
    fi
done

Podsumowanie – WP-CLI jako niezbędne narzędzie profesjonalnego WordPress developera

WP-CLI to znacznie więcej niż tylko alternatywa dla panelu administracyjnego WordPress – to potężne narzędzie, które zmienia sposób zarządzania stronami opartymi na tym CMS. Dla profesjonalistów pracujących z WordPressem na co dzień, staje się ono niezbędnym elementem zestawu narzędzi.

Kluczowe korzyści z wdrożenia WP-CLI:

  • Szybkość – operacje masowe wykonywane w minutach zamiast godzin
  • Automatyzacja – możliwość tworzenia zautomatyzowanych workflow dla powtarzalnych zadań
  • Precyzja – dokładne kontrolowanie parametrów każdej operacji
  • Skalowalność – efektywne zarządzanie setkami lub tysiącami instalacji
  • Integracja – zgodność z nowoczesnymi narzędziami DevOps i CI/CD

Kiedy warto zacząć używać WP-CLI:

  • Gdy zarządzasz więcej niż jedną stroną WordPress
  • Gdy regularnie wykonujesz te same operacje administracyjne
  • Gdy chcesz zautomatyzować aktualizacje i kopie zapasowe
  • Gdy pracujesz w środowisku deweloperskim lub chmurowym
  • Gdy chcesz wdrożyć praktyki DevOps w swoim workflow

Najlepsze praktyki pracy z WP-CLI:

  1. Zacznij od prostych komend – opanuj podstawy przed przejściem do zaawansowanych operacji
  2. Testuj na środowisku deweloperskim – nigdy nie uruchamiaj nieznanych komend na produkcji
  3. Twórz aliasy – skróć często używane komendy dla większej efektywności
  4. Loguj operacje – zapisuj wyniki komend w celu audytu i debugowania
  5. Integruj z innymi narzędziami – połącz WP-CLI z systemami monitorowania i CI/CD

Jeśli interesuje Cię zarządzanie konfiguracją WordPress, polecam przeczytać artykuł: Jak poprawnie ustawić wp-config.php dla optymalnej wydajności, gdzie znajdziesz więcej szczegółów na ten temat.

WP-CLI to inwestycja w efektywność i profesjonalizm. Chociaż wymaga początkowego wysiłku w nauce, zwraca się wielokrotnie w postaci oszczędzonego czasu, mniejszej liczby błędów i większej kontroli nad środowiskiem WordPress. Dla każdego, kto traktuje WordPress poważnie jako platformę deweloperską i biznesową, opanowanie WP-CLI to krok w stronę profesjonalizmu i nowoczesnych praktyk zarządzania systemami.

Chcesz wdrożyć WP-CLI do zarządzania swoimi stronami WordPress? Skontaktuj się z nami, aby uzyskać profesjonalne wsparcie w konfiguracji, automatyzacji i optymalizacji procesów administracyjnych. Zwiększymy efektywność zarządzania Twoimi stronami.