WP-CLI: zarządzanie WordPressem z linii poleceń

Opublikowano: 30 marca 2026 · Autor: Marcin Szewczyk-Wilgan

Panel administracyjny WordPressa działa dobrze, dopóki zarządzasz jedną stroną. Przy kilku witrynach, środowiskach staging, regularnych aktualizacjach i zadaniach cron – klikanie w interfejsie staje się wąskim gardłem. WP-CLI to oficjalne narzędzie wiersza poleceń do zarządzania WordPressem. Pozwala wykonywać z terminala wszystko to, co robisz w panelu – i znacznie więcej: masowe aktualizacje wtyczek, eksport i import bazy danych, zarządzanie użytkownikami, czyszczenie transientów, zarządzanie cronem, search-replace po migracji i automatyzację powtarzalnych zadań w skryptach bash. Jeśli szukasz komend niższego poziomu – grep, find, sed, awk – zajrzyj do artykułu WordPress w terminalu serwera. W tym artykule znajdziesz praktyczne komendy WP-CLI pogrupowane tematycznie – od instalacji i konfiguracji, przez codzienne utrzymanie, po zaawansowane operacje na bazie danych i automatyzację.

1. Instalacja i konfiguracja WP-CLI

WP-CLI wymaga PHP 5.6+ i dostępu do terminala na serwerze. Większość dobrych hostingów (VPS, dedykowane, jakościowe sharedy) ma WP-CLI preinstalowane. Jeśli nie – instalacja zajmuje minutę. Potrzebujesz pomocy z konfiguracją środowiska? Zajmujemy się administracją serwerówhostingiem WordPress.

Instalacja WP-CLI:

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

Sprawdź wersję i środowisko:

wp --version wp --info

Aktualizacja WP-CLI do najnowszej wersji:

wp cli update

Autouzupełnianie komend (bash completion):

wp cli completions --type=bash >> ~/.bashrc source ~/.bashrc

Uruchomienie jako inny użytkownik – ważne na serwerach z wieloma witrynami:

sudo -u www-data wp option get siteurl --path=/var/www/html

2. Instalacja i zarządzanie WordPressem

WP-CLI pozwala zainstalować WordPressa od zera – pobranie plików, utworzenie wp-config.php, instalacja bazy – bez otwierania przeglądarki. Przydatne przy automatyzacji wdrożeń i provisioningu serwerów.

Pobierz pliki WordPressa:

wp core download --locale=pl_PL

Utwórz wp-config.php:

wp config create --dbname=wordpress --dbuser=root --dbpass=haslo --dbhost=localhost --dbprefix=wp_

Zainstaluj WordPressa – utwórz bazę i konto admina:

wp core install --url="https://domena.pl" --title="Moja strona" --admin_user=admin --admin_email=admin@domena.pl --admin_password=silnehaslo

Sprawdź aktualną wersję WordPressa:

wp core version

Zaktualizuj WordPressa do najnowszej wersji:

wp core update wp core update-db

Przełącz tryb debug:

wp config set WP_DEBUG true --raw wp config set WP_DEBUG_LOG true --raw

Wyłącz tryb debug po diagnostyce:

wp config set WP_DEBUG false --raw

3. Wtyczki i motywy

Zarządzanie wtyczkami i motywami z WP-CLI to oczywista przewaga nad panelem – szczególnie przy masowych aktualizacjach, audytach i skryptach automatyzujących utrzymanie wielu witryn. Kryteria wyboru motywu WordPress omawiamy w osobnym artykule.

Lista zainstalowanych wtyczek:

wp plugin list

Lista wtyczek wymagających aktualizacji:

wp plugin list --update=available

Zaktualizuj wszystkie wtyczki:

wp plugin update --all

Zainstaluj i aktywuj wtyczkę:

wp plugin install wordfence --activate

Dezaktywuj wtyczkę – np. po błędzie:

wp plugin deactivate wordfence

Usuń nieaktywne wtyczki:

wp plugin delete $(wp plugin list --status=inactive --field=name)

Lista motywów:

wp theme list

Aktywuj motyw:

wp theme activate flavor

Zaktualizuj wszystkie motywy:

wp theme update --all

4. Baza danych

Baza danych to serce WordPressa. WP-CLI daje narzędzia do eksportu, importu, optymalizacji, czyszczenia i operacji search-replace – tej ostatniej nie da się bezpiecznie wykonać innymi narzędziami, bo WP-CLI poprawnie obsługuje serializowane dane PHP. Więcej o administracji MySQLPostgreSQL na stronach usług.

Eksport bazy danych (dump SQL):

wp db export backup.sql

Import bazy danych:

wp db import backup.sql

Optymalizuj tabele – odpowiednik OPTIMIZE TABLE:

wp db optimize

Napraw uszkodzone tabele:

wp db repair

Search-replace po migracji – bezpiecznie obsługuje serializowane dane:

wp search-replace 'https://stara-domena.pl' 'https://nowa-domena.pl' --all-tables --dry-run

Usuń --dry-run po weryfikacji, żeby wykonać faktyczną zamianę.

Search-replace z raportem zmian per tabela:

wp search-replace 'stara-domena.pl' 'nowa-domena.pl' --all-tables --report-changed-only

Wykonaj zapytanie SQL bezpośrednio:

wp db query "SELECT COUNT(*) FROM wp_posts WHERE post_type='revision'"

Usuń rewizje wpisów – oszczędność miejsca:

wp post delete $(wp post list --post_type=revision --format=ids) --force

Usuń wygasłe transienty:

wp transient delete --expired

Usuń WSZYSTKIE transienty:

wp transient delete --all

Policz rekordy autoload w wp_options:

wp db query "SELECT COUNT(*) FROM wp_options WHERE autoload='yes'"

Rozmiar autoload – częsta przyczyna wolnego TTFB:

wp db query "SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload='yes'"

5. Użytkownicy i uprawnienia

Zarządzanie użytkownikami z WP-CLI jest szybsze niż przez panel – szczególnie przy masowych operacjach, audytach uprawnień i resetowaniu haseł po incydentach bezpieczeństwa.

Lista użytkowników:

wp user list

Utwórz nowego użytkownika:

wp user create jan jan@domena.pl --role=editor --display_name="Jan Kowalski"

Zmień hasło użytkownika:

wp user update admin --user_pass=nowesilnehaslo

Zmień rolę użytkownika:

wp user set-role jan administrator

Usuń użytkownika i przypisz jego treści innemu:

wp user delete jan --reassign=1

Lista administratorów – audyt bezpieczeństwa:

wp user list --role=administrator --fields=ID,user_login,user_email

Wymuś wylogowanie wszystkich użytkowników – po incydencie bezpieczeństwa:

wp user session destroy --all

6. Cron i zaplanowane zadania

WordPress ma własny system cron (wp-cron), który uruchamia zaplanowane zadania przy odwiedzinach strony. Na stronach z małym ruchem zadania mogą się opóźniać, a na stronach z dużym ruchem wp-cron generuje zbędne obciążenie. WP-CLI pozwala zarządzać cronem ręcznie i przenieść go na systemowy crontab.

Lista zaplanowanych zadań cron:

wp cron event list

Uruchom konkretne zadanie ręcznie:

wp cron event run wp_update_plugins

Uruchom wszystkie zaległe zadania:

wp cron event run --due-now

Wyłącz wp-cron i przejdź na systemowy crontab:

wp config set DISABLE_WP_CRON true --raw

Następnie dodaj do crontaba serwera:

*/15 * * * * cd /var/www/html && wp cron event run --due-now --quiet

Usuń osierocone zadanie cron – np. po usunięciu wtyczki:

wp cron event delete nazwa_zadania

Sprawdź, czy wp-cron jest wyłączony:

wp config get DISABLE_WP_CRON

7. Treści i multimedia

WP-CLI pozwala zarządzać wpisami, stronami, komentarzami i biblioteką mediów bez otwierania panelu. Przydatne przy masowych operacjach – usuwanie spamu, regeneracja miniatur po zmianie motywu, eksport treści. Potrzebujesz dedykowanego rozwiązania do zarządzania treścią? Chętnie pomożemy.

Lista wpisów:

wp post list --post_type=post --fields=ID,post_title,post_status

Lista stron ze statusem draft:

wp post list --post_type=page --post_status=draft

Utwórz nowy wpis:

wp post create --post_type=post --post_title="Nowy wpis" --post_status=publish

Usuń spam komentarze:

wp comment delete $(wp comment list --status=spam --format=ids) --force

Policz komentarze per status:

wp comment list --format=count --status=approved wp comment list --format=count --status=spam wp comment list --format=count --status=trash

Regeneruj miniaturki – po zmianie motywu lub rozmiarów:

wp media regenerate --yes

Regeneruj miniaturki tylko dla konkretnego rozmiaru:

wp media regenerate --image_size=thumbnail --yes

Zaimportuj obrazki z katalogu:

wp media import /sciezka/do/obrazkow/*

8. Opcje i konfiguracja

Tabela wp_options przechowuje konfigurację WordPressa, wtyczek i motywu. WP-CLI pozwala odczytywać, modyfikować i usuwać opcje bez logowania do bazy danych.

Sprawdź URL strony:

wp option get siteurl wp option get home

Zmień URL strony – np. po migracji:

wp option update siteurl 'https://nowa-domena.pl' wp option update home 'https://nowa-domena.pl'

Sprawdź aktywny motyw:

wp option get template wp option get stylesheet

Wyłącz komentarze globalnie:

wp option update default_comment_status closed

Sprawdź wartość dowolnej opcji:

wp option get blogdescription

Lista opcji autoload – diagnostyka wolnego TTFB:

wp option list --autoload=on --fields=option_name,option_value --format=table | head -30

Usuń osierocone opcje po wtyczce:

wp option delete nazwa_opcji_wtyczki

9. Cache i wydajność

WP-CLI daje kontrolę nad object cache, transientami i cache wtyczek bezpośrednio z terminala – bez logowania do panelu. Więcej o strategiach cache w artykule Optymalizacja Core Web Vitals i na stronie usługi optymalizacji WordPress.

Wyczyść object cache:

wp cache flush

Usuń wygasłe transienty:

wp transient delete --expired

Sprawdź typ object cache – Redis, Memcached, plikowy:

wp cache type

Wyczyść cache WP Super Cache:

wp super-cache flush

Wyczyść cache WP Rocket:

wp rocket clean --confirm

Uruchom preload cache WP Rocket:

wp rocket preload

10. Automatyzacja i skrypty

Prawdziwa siła WP-CLI ujawnia się w skryptach bash. Możesz zautomatyzować pełne utrzymanie witryny – aktualizacje, backup, czyszczenie, monitoring – i uruchamiać to cronem lub ręcznie jedną komendą. Nie chcesz zajmować się tym samodzielnie? W ramach opieki nad WordPress robimy to za Ciebie.

Skrypt: backup + aktualizacja + czyszczenie:

#!/bin/bash cd /var/www/html # Backup bazy wp db export /backup/db-$(date +%Y%m%d).sql # Aktualizuj core, wtyczki, motywy wp core update wp core update-db wp plugin update --all wp theme update --all # Wyczyść wp transient delete --expired wp cache flush echo "Utrzymanie zakończone: $(date)"

Zarządzanie wieloma witrynami w pętli:

for site in /var/www/site1 /var/www/site2 /var/www/site3; do echo "=== $site ===" wp plugin update --all --path="$site" wp core update --path="$site" done

Raport stanu witryny – wersje, wtyczki, aktualizacje:

echo "WordPress: $(wp core version)" echo "PHP: $(php -v | head -1)" echo "Wtyczki do aktualizacji:" wp plugin list --update=available --fields=name,version,update_version

Codzienny cron z backupem i aktualizacjami:

0 3 * * * cd /var/www/html && bash /scripts/wp-maintenance.sh >> /var/log/wp-maintenance.log 2>&;1

Eksport listy wtyczek do CSV – do dokumentacji:

wp plugin list --format=csv > plugins-$(date +%Y%m%d).csv

Najczęściej zadawane pytania

Tak – WP-CLI to oficjalne narzędzie, rozwijane przez społeczność WordPressa i wspierane przez Automattic. Jest standardem w profesjonalnej administracji WordPressem. Jedyne ryzyko wynika z błędów użytkownika – dlatego przy destrukcyjnych operacjach (np. search-replace, usuwanie wpisów) używaj flagi --dry-run przed faktycznym wykonaniem.

Zależy od hostingu. Większość jakościowych hostingów WordPress ma WP-CLI preinstalowane. Na tanich sharedach bywa niedostępne – potrzebujesz dostępu SSH i PHP CLI. Jeśli Twój hosting nie udostępnia WP-CLI, rozważ zmianę na lepszego dostawcę.

WP-CLI search-replace poprawnie obsługuje serializowane dane PHP – aktualizuje zarówno tekst, jak i liczniki długości ciągów w serializacji. Sed tego nie robi i uszkodzi serializowane dane. Do zamiany domen w bazie WordPress zawsze używaj WP-CLI, nie seda.

Użyj flagi --path=/sciezka/do/witryny przy każdej komendzie, np. wp plugin list --path=/var/www/site2. Dla WordPress Multisite dodaj --url=subdomena.domena.pl, żeby wskazać konkretną witrynę w sieci.

WP-CLI nie ma wbudowanego undo. Dlatego przed destrukcyjnymi operacjami zawsze rób backup: wp db export backup.sql przed search-replace, --dry-run przed masowymi zmianami. Przy aktualizacjach – środowisko staging pozwala przetestować zmiany przed produkcją.

Potrzebujesz pomocy z zarządzaniem WordPressem?

Jeśli zarządzasz wieloma witrynami WordPress i potrzebujesz wsparcia w automatyzacji utrzymania, migracjach lub konfiguracji serwera – porozmawiajmy. Bez zobowiązań, bez marketingowego żargonu – konkretna propozycja po krótkiej rozmowie.

Telefon

+48 608 271 665

Pn–Pt, 8:00–16:00

E-mail

kontakt@weboptimo.pl

Odpowiadamy w ciągu 24h

Firma

WebOptimo

NIP: 6391758393