WP-CLI: guida ai comandi per gestire WordPress dal terminale

WP-CLI è l’interfaccia ufficiale a riga di comando di WordPress che permette di gestire il sito dal terminale via SSH, senza passare dalla bacheca di amministrazione.

  • aggiornare plugin e temi in blocco
  • cercare e sostituire gli URL nel database
  • esportare e importare il database
  • creare utenti e fare backup

Serve a sviluppatori, agenzie web e sistemisti che desiderano automatizzare operazioni complesse, gestire installazioni multiple e ottimizzare il workflow di sviluppo.

In questa guida trovi l’installazione, i comandi che uso davvero, il backup prima di ogni operazione distruttiva e i casi in cui conviene delegare.

Cos’è WP-CLI e perché dovresti usarlo?

WP-CLI (WordPress Command Line Interface) è un’interfaccia a riga di comando che consente di gestire installazioni WordPress attraverso il terminale, senza dover accedere al pannello amministrativo.

Sviluppato e mantenuto dalla comunità WordPress, con la documentazione ufficiale su wp-cli.org, è lo strumento che molti sviluppatori usano per gestire i siti WordPress.

A differenza della dashboard tradizionale, WP-CLI permette di eseguire operazioni complesse con singoli comandi, automatizzare task ripetitivi e integrare WordPress nei flussi di lavoro DevOps. È particolarmente utile quando si gestiscono decine o centinaia di siti WordPress, rendendo possibile ciò che sarebbe impensabile fare manualmente.

Quali vantaggi offre WP-CLI a sviluppatori e agenzie?

L’utilizzo di WP-CLI offre numerosi vantaggi concreti che giustificano l’investimento di tempo nell’apprendimento:

Velocità ed efficienza: operazioni che richiederebbero minuti attraverso la dashboard possono essere eseguite in pochi secondi. Ad esempio, aggiornare tutti i plugin di un’installazione richiede un singolo comando invece di click multipli.

Automazione: è possibile creare script personalizzati per automatizzare deployment, backup, migrazioni e manutenzione WordPress. Questo si traduce in risparmio di tempo e riduzione degli errori umani.

Gestione batch: quando si amministrano più siti WordPress, WP-CLI permette di applicare modifiche in massa attraverso script, rendendo scalabile la gestione di numerose installazioni.

Debugging avanzato: comandi specifici consentono di diagnosticare problemi, analizzare il database e controllare lo stato del sistema in modo rapido.

Integrazione CI/CD: WP-CLI si integra in pipeline di continuous integration e deployment, permettendo test automatici e rilasci controllati.

Quando usare WP-CLI invece della dashboard?

Non si tratta di sostituire completamente la dashboard WordPress, ma di scegliere lo strumento giusto per il task giusto. WP-CLI è particolarmente indicato quando:

  • Devi gestire più siti WordPress contemporaneamente
  • Hai bisogno di automatizzare operazioni ripetitive
  • Lavori su server remoti via SSH
  • Stai migrando siti tra ambienti diversi
  • Vuoi ottimizzare database di grandi dimensioni
  • Hai necessità di fare search-replace massivi
  • Lavori in team con workflow Git-based
  • Gestisci siti WooCommerce con cataloghi estesi
  • Se il sito non ha un responsabile tecnico che esegue aggiornamenti e backup, meglio la dashboard o la manutenzione delegata (vedi l’ultima sezione)

Per operazioni quotidiane come scrivere articoli, gestire media o configurare plugin con interfacce complesse, la dashboard rimane più pratica.

Come si installa WP-CLI?

L’installazione di WP-CLI si fa in modo diretto e richiede solo pochi minuti. Vediamo come procedere su diversi sistemi operativi.

Requisiti di sistema

Prima di installare WP-CLI, verifica che il tuo sistema soddisfi i seguenti requisiti minimi:

  • Sistema operativo UNIX-like (Linux, macOS, FreeBSD) o Windows con WSL
  • PHP 7.2.24 o successivo, come indicato dal manuale ufficiale; PHP 8.1 o superiore è una raccomandazione, non un requisito
  • WordPress 5.0 o superiore
  • Accesso SSH al server (per installazioni remote)
  • Permessi di lettura/scrittura sulla directory WordPress

Installazione su Linux/macOS

Il metodo più semplice e raccomandato è scaricare il file Phar e renderlo eseguibile:

Verifica che funzioni correttamente:

Rendi il file eseguibile e spostalo in una directory del PATH:

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

Ora puoi usare il comando wp da qualsiasi directory.

Installazione su Windows

php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Su Windows 10/11, il metodo consigliato è utilizzare Windows Subsystem for Linux (WSL). Una volta installato WSL, segui le istruzioni per Linux riportate sopra. Oltre a WSL, il manuale ufficiale prevede una modalità di installazione dedicata a Windows.

In alternativa, puoi usare WP-CLI attraverso Git Bash o creare un file batch, ma l’esperienza non sarà ottimale come su sistemi UNIX.

Altri metodi di installazione

Il manuale ufficiale di installazione di WP-CLI elenca, oltre al file phar, anche Git, Composer, Homebrew, Docker e il pacchetto .deb. Il phar resta il metodo più semplice.

Verifica dell’installazione

Per confermare che WP-CLI sia installato correttamente, esegui php wp-cli.phar –info prima di spostare il file, poi wp –info dopo averlo spostato:

wp --info

Dovresti vedere informazioni su PHP, WordPress e WP-CLI. Per testare su un’installazione WordPress esistente, naviga nella directory del sito ed esegui wp core version:

wp core version

Questo mostrerà la versione di WordPress installata, confermando che WP-CLI può comunicare correttamente con il tuo sito.

Come installare WP-CLI su un hosting condiviso?

Su un hosting condiviso WP-CLI si installa solo se il piano include l’accesso SSH, quindi la risposta dipende dal pacchetto che hai scelto e non da WordPress.

Senza SSH il terminale resta fuori portata, anche se dal pannello cPanel il sito funziona benissimo. Per verificarlo, prova ad accedere con ssh utente@tuodominio.it usando le credenziali che trovi nel pannello. Se il login riesce, controlla se WP-CLI è già presente con wp –info; in caso contrario scarica il file con wget o curl, poi lancia php wp-cli.phar –info per confermare che funzioni. I requisiti sono quelli di WordPress, con PHP 7.2.24 o successivo.

Il mio consiglio è di controllare la disponibilità di SSH prima di scegliere l’hosting: è la prima cosa che verifico nella realizzazione di siti web professionali, perché cambiare piano a sito già avviato costa tempo e migrazioni.

Quali sono i comandi WP-CLI più utili?

Padroneggiare i comandi base di WP-CLI ti permetterà di gestire il 90% delle operazioni quotidiane. Ecco i comandi essenziali che ogni sviluppatore WordPress dovrebbe conoscere.

wp core, Gestione Core WordPress

Il comando wp core gestisce tutte le operazioni relative al core di WordPress.

Scaricare WordPress:

wp core download --locale=it_IT

Questo scarica l’ultima versione di WordPress in italiano nella directory corrente.

Installare WordPress:

wp core install --url=example.com --title="Il Mio Sito" --admin_user=admin --admin_email=email@example.com

Aggiornare WordPress:

wp core update

Per aggiornare anche database e traduzioni:

wp core update-db
wp language core update

Verificare l’integrità dei file core:

wp core verify-checksums

Questo comando è utilissimo per identificare file corrotti o modificati, fondamentale per la sicurezza.

wp plugin, Gestione Plugin

La gestione dei plugin è una delle operazioni più frequenti, e WP-CLI la rende estremamente rapida.

Elencare tutti i plugin installati:

wp plugin list

Installare un plugin:

wp plugin install contact-form-7 --activate

Aggiornare tutti i plugin:

wp plugin update --all

Disattivare e riattivare tutti i plugin (utile per debugging):

wp plugin deactivate --all
wp plugin activate --all

Eliminare plugin disattivi:

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

wp theme, Gestione Temi

I comandi per i temi seguono una logica simile ai plugin.

Installare un tema:

wp theme install twentytwentyfour --activate

Elencare tutti i temi:

wp theme list

Attivare un tema:

wp theme activate twentytwentyfour

Eliminare temi non utilizzati:

wp theme delete twentytwentytwo twentytwentythree

Mantenere solo i temi necessari riduce la superficie di attacco per vulnerabilità di sicurezza.

wp db, Gestione Database

La gestione del database è un’area dove WP-CLI eccelle, offrendo controllo granulare.

Ottimizzare il database:

wp db optimize

Esportare il database:

wp db export backup.sql

Importare un database:

wp db import backup.sql

Eseguire query SQL:

wp db query "SELECT * FROM wp_options WHERE option_name LIKE 'siteurl'"

Reset completo del database (attenzione, cancella tutto!):

wp db reset --yes

wp user, Gestione Utenti

Gestire utenti da CLI è particolarmente utile quando hai perso l’accesso admin o devi gestire molti account.

Creare un nuovo amministratore:

wp user create nuovo_admin email@example.com --role=administrator --user_pass=password_sicura

Elencare tutti gli utenti:

wp user list

Cambiare password di un utente:

wp user update admin --user_pass=nuova_password

Eliminare utenti spam:

wp user delete $(wp user list --role=subscriber --field=ID) --yes

Quali comandi WP-CLI avanzati servono agli sviluppatori?

Gli sviluppatori usano wp search-replace per sostituire stringhe nel database, wp cache per la cache, wp cron per i task pianificati e wp scaffold per generare codice di base.

Oltre ai comandi base, WP-CLI offre funzionalità avanzate che semplificano operazioni complesse.

wp search-replace – sostituzione in massa

Il comando wp search-replace aggiorna gli URL nel database; con –dry-run vedi in anteprima cosa verrebbe sostituito. È il comando che serve dopo una migrazione o un cambio di dominio.

wp search-replace 'http://oldsite.com' 'https://newsite.com' --dry-run

Prima di ogni operazione distruttiva (search-replace, db import, db reset) segui questa checklist:

wp search-replace 'http://oldsite.com' 'https://newsite.com' --skip-columns=guid
  1. fai un backup con wp db export;
  2. prova il comando con –dry-run;
  3. verifica il risultato in ambiente locale;
  4. solo dopo esegui l’operazione in produzione.
wp search-replace 'testo_vecchio' 'testo_nuovo' wp_posts wp_postmeta

Cambiare URL del sito:

Il flag –dry-run mostra cosa verrebbe modificato senza applicare le modifiche. Una volta verificato, esegui senza il flag:

wp search-replace 'vecchio' 'nuovo' --all-tables

In tutti gli esempi di search-replace aggiungi il flag –skip-columns=guid: la colonna guid contiene l’identificatore univoco di ogni contenuto, che i feed e i lettori RSS usano per riconoscerlo, quindi non va modificata nemmeno quando cambia l’URL del sito.

wp cache flush
wp transient delete --all
wp rewrite flush

Sostituzioni mirate su tabelle specifiche:

Search-replace con serializzazione (gestisce correttamente array PHP):

wp cache – gestione cache

Se utilizzi plugin di caching come WP Super Cache o W3 Total Cache:

Svuotare la cache:

wp cron event list

Svuotare cache di oggetti:

Flush cache di Rewrite Rules:

wp cron event run --due-now

wp cron – gestione task pianificati

wp cron event schedule my_custom_event '+1 hour' --daily

WordPress usa un sistema di cron per task pianificati. WP-CLI permette di gestirli efficacemente.

wp cron event delete my_custom_event

Elencare eventi cron:

Eseguire tutti gli eventi cron in attesa:

Schedulare un evento personalizzato:

Eliminare un evento specifico:

wp scaffold – generazione codice

WP-CLI può generare boilerplate code per velocizzare lo sviluppo.

wp scaffold plugin my-custom-plugin

Creare uno skeleton per un plugin:

wp scaffold post-type libro --label=Libro --textdomain=mio-tema

Generare un Custom Post Type:

wp scaffold taxonomy genere --post_types=libro

Creare una tassonomia:

Generare unit tests:

wp scaffold plugin-tests my-plugin

Come automatizzo le operazioni con WP-CLI?

Con WP-CLI, quando ripeti le stesse operazioni su più siti, conviene metterle in uno script personalizzato per automatizzare workflow complessi.

Creare script di deployment

Uno script di deployment automatizza il processo di pubblicazione di modifiche su un server di produzione.

Esempio di deploy.sh:

Rendi lo script eseguibile:

Backup automatizzati

Crea uno script per backup completi programmabili.

#!/bin/bash

echo "🚀 Inizio deployment..."

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

# Aggiorna WordPress core
wp core update

# Aggiorna tutti i plugin
wp plugin update --all

# Aggiorna traduzioni
wp language core update
wp language plugin update --all

# Flush cache
wp cache flush
wp rewrite flush

# Ottimizza database
wp db optimize

echo "✅ Deployment completato!"

backup.sh:

chmod +x deploy.sh

Aggiungi questo script al crontab per esecuzione automatica:

Aggiornamenti programmati

#!/bin/bash

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

# Crea directory backup se non esiste
mkdir -p $BACKUP_DIR

# Backup database
wp db export $BACKUP_DIR/${SITE_NAME}_db_${DATE}.sql

# Backup files (esclusi uploads per ridurre dimensione)
tar -czf $BACKUP_DIR/${SITE_NAME}_files_${DATE}.tar.gz \
    --exclude='wp-content/uploads' \
    .

# Mantieni solo gli ultimi 7 backup
find $BACKUP_DIR -name "${SITE_NAME}_*" -mtime +7 -delete

echo "✅ Backup completato: ${DATE}"
crontab -e
# Aggiungi questa riga per backup giornaliero alle 2:00 AM
0 2 * * * /path/to/backup.sh

Script per gestire aggiornamenti multipli con sicurezza. Per i siti che seguo in manutenzione uso gli stessi comandi, con backup prima di ogni aggiornamento. Se hai molti siti e non vuoi lavorare con script e SSH, un’alternativa è gestire più siti WordPress con MainWP.

update-maintenance.sh:

#!/bin/bash

# Attiva modalità manutenzione
wp maintenance-mode activate

# Backup pre-aggiornamento
wp db export backup-before-updates.sql

# Aggiorna tutto
wp core update
wp plugin update --all
wp theme update --all

# Verifica integrità
if wp core verify-checksums; then
    echo "✅ Core integro"
    # Disattiva manutenzione
    wp maintenance-mode deactivate
else
    echo "❌ Problemi rilevati!"
    # Lascia manutenzione attiva e notifica
    exit 1
fi

Quali comandi servono per gestire un negozio WooCommerce da terminale?

Se gestisci siti e-commerce con WooCommerce, WP-CLI offre comandi dedicati per prodotti e ordini, utili quando hai un catalogo esteso.

Gestione prodotti da CLI

wp wc product list

Elencare prodotti:

wp wc product create --name="Maglietta" --type=simple --regular_price=19.99 --user=1

Creare un prodotto:

wp wc product update $(wp wc product list --field=id) --sale_price=14.99

Aggiornare prezzi in batch:

wp wc product import prodotti.csv --user=1

Importare prodotti da CSV:

Gestione ordini e customer

wp wc shop_order list --per_page=20 --orderby=date --order=DESC

Visualizzare ordini recenti:

wp wc shop_order export ordini.csv --fields=id,date,status,total

Esportare ordini in CSV:

wp wc tool run regenerate_thumbnails

Svuotare carrelli abbandonati:

Fai sempre wp db export prima.

wp db query "DELETE FROM wp_woocommerce_sessions WHERE session_expiry < UNIX_TIMESTAMP()"

Con un catalogo ampio, la gestione avanzata di WooCommerce tramite CLI evita molto lavoro manuale. Se stai cercando supporto per il tuo negozio online, scopri i miei servizi di sviluppo ecommerce WooCommerce a Bari.

Come risolvo gli errori più comuni di WP-CLI?

Anche con WP-CLI possono verificarsi problemi. Ecco come risolverli.

Problemi di permessi

Errore: “This does not seem to be a WordPress installation.”

Soluzione: Verifica di essere nella directory root di WordPress:

Se i permessi sono errati:

pwd
ls wp-config.php

Memoria PHP esaurita: aumenta il limite di memoria per il comando, ad esempio con php -d memory_limit=512M davanti a wp. Funzioni non definite: di solito dipendono da un plugin o da un tema che si carica in modo errato, quindi riesegui il comando con l’opzione –skip-plugins o –skip-themes.

# Imposta proprietà corretta (sostituisci username:group)
sudo chown -R www-data:www-data /path/to/wordpress

# Imposta permessi corretti
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Errori di connessione database

Errore: “Error establishing a database connection”

wp config get DB_NAME
wp config get DB_USER
wp config get DB_HOST

Verifica credenziali:

wp db check

Testa connessione manualmente:

wp db repair

Se il database è ancora accessibile, fai prima un backup con wp db export.

Se il database è corrotto:

Performance e ottimizzazione

Se WP-CLI è lento:

wp --no-color plugin list

Disabilita output colorato:

wp plugin list --format=ids

Limita output:

Usa cache di opzioni:

# Aggiungi al wp-config.php
define('WP_CLI_CACHE_DIR', '/tmp/wp-cli-cache');

Quando conviene delegare la manutenzione a un professionista?

Conviene delegare quando il sito porta clienti o vendite e nessuno in azienda ha il tempo di controllare aggiornamenti, sicurezza e backup con regolarità. Se invece ti piace il terminale e hai pochi siti, puoi farlo da solo.

WP-CLI rende veloci queste operazioni, ma non decide al posto tuo quando farle né cosa controllare dopo. Il comando wp plugin update –all è quello che uso per i siti che seguo in manutenzione: gli stessi comandi ogni volta, senza accessi manuali alla bacheca. La parte che richiede esperienza è quello che c’è intorno: il backup prima di aggiornare, la verifica che il sito funzioni dopo e la scelta di cosa fare quando un plugin non è compatibile.

Punti chiave

  • Aggiornamenti, sicurezza e backup sono il costo che i clienti sottovalutano di più.
  • Un sito WordPress lasciato senza aggiornamenti per un anno è il primo bersaglio di attacchi e malware, e ripulirlo costa più di un anno di manutenzione.
  • Più plugin e funzioni richiedono più controlli, per questo la manutenzione di un ecommerce costa più di quella di un sito vetrina.
  • Se gestisci tu il sito, fai sempre un backup e un –dry-run prima di ogni operazione distruttiva.

Prossimi passi

Se hai un solo sito e un minimo di dimestichezza con SSH, prova i comandi su una copia di staging prima di toccare la produzione. Se i siti sono diversi, o il tuo lavoro è un altro, conviene affidarsi a un servizio di manutenzione WordPress a Bari che comprende aggiornamenti, sicurezza e backup. Con i miei siti è gratuita il primo anno, poi parte da 165 euro all’anno per un sito vetrina semplice e va da 300 a 400 euro all’anno per un ecommerce.

Domande frequenti su WP-CLI

WP-CLI funziona su qualsiasi hosting?

No, serve l’accesso SSH. WP-CLI funziona su qualsiasi hosting che lo offra, come VPS, server dedicati e molti hosting WordPress gestiti di qualità. Gli hosting condivisi senza SSH, spesso i piani più economici, non lo supportano. Prima di scegliere l’hosting, verifica la disponibilità di SSH e di WP-CLI.

Posso usare WP-CLI senza esperienza da terminale?

WP-CLI non è pensato per chi non ha esperienza tecnica. Alcuni comandi sono irreversibili: un wp db reset eseguito per errore cancella tutto il database. Prima di usarlo su un sito reale, fai pratica in locale e tieni sempre un backup aggiornato.

Cosa posso fare con WP-CLI che non posso fare dall’admin?

Puoi aggiornare decine di plugin in un colpo solo, cercare e sostituire testo nel database, inclusi gli URL dopo una migrazione, e importare o esportare il database. Puoi anche gestire utenti in blocco, svuotare la cache da remoto e attivare o disattivare plugin con script automatici.

WP-CLI è sicuro da usare su un sito in produzione?

Sì, se lo usi con metodo. I rischi nascono dall’errore umano più che dallo strumento. Prima di ogni operazione distruttiva fai un backup con wp db export, verifica i comandi in locale e usa il flag –dry-run dove è disponibile, così vedi cosa cambierebbe prima di applicarlo.

Come installo un plugin con WP-CLI?

Usa il comando wp plugin install seguito dallo slug del plugin e dal flag –activate, ad esempio wp plugin install nome-plugin –activate. In una sola riga lo installi e lo attivi. Lo slug è il nome che compare nell’URL della pagina del plugin su wordpress.org.

Posso usare WP-CLI su un sito remoto senza collegarmi ogni volta?

Sì, con gli alias SSH. Nel file wp-cli.yml indichi host, utente e percorso del sito, poi lanci i comandi dal tuo computer, ad esempio wp @produzione plugin update –all. Non servono login manuali ogni volta e gli stessi comandi si ripetono uguali a ogni aggiornamento.

Come aggiorno WP-CLI all’ultima versione?

Con il comando wp cli update, che scarica l’ultima versione stabile di WP-CLI e sostituisce quella installata. Se lo hai installato con un gestore di pacchetti, come Homebrew o il pacchetto .deb, aggiorna tramite lo stesso gestore. Puoi verificare la versione installata con wp –version.

Gestisci WordPress da terminale o vuoi imparare a farlo?

Posso aiutarti a strutturare il workflow con WP-CLI, sia che tu gestisca già WordPress da terminale sia che tu voglia imparare a farlo.

Chiamami al 329 6277 257. Lavoro così ogni giorno e posso aiutarti a strutturare il tuo workflow.

Sono Lino Sabato, sviluppatore WordPress a Bari: lavoro da Bari e in Puglia, con assistenza anche da remoto in tutta Italia e all’estero.

Scrivimi per una consulenza