WP-CLI è l'interfaccia a riga di comando ufficiale di WordPress. Invece di cliccare in wp-admin, digiti comandi in un terminale sul server: wp core update aggiorna WordPress, wp plugin update --all aggiorna tutti i plugin, wp db export salva il database, wp search-replace sostituisce un dominio in tutto il sito senza corrompere i dati serializzati. Il progetto è stato avviato nel 2011 da Andrés Cifuentes e Cristi Burcă, oggi è mantenuto come progetto ufficiale di WordPress.org ed è diventato lo strumento standard dietro la manutenzione WordPress professionale, l'automazione degli hosting e le pipeline di deploy. La proposta pratica è semplice: tutto quello che fa wp-admin, WP-CLI lo fa più in fretta, più un lungo elenco di cose che wp-admin non può fare affatto, come verificare i file del core rispetto ai checksum ufficiali dopo un sospetto attacco, riparare un sito la cui amministrazione è irraggiungibile per un errore fatale, oppure eseguire lo stesso script di manutenzione su cinquanta siti prima che il caffè si raffreddi.
Cos'è WP-CLI e chi lo mantiene?
WP-CLI è un'applicazione PHP che carica WordPress nel terminale e ne espone le funzionalità sotto forma di comandi. Poiché avvia l'installazione WordPress reale, lavora con i tuoi dati veri, i tuoi plugin installati e la tua configurazione, non con una loro simulazione. Il progetto vive su wp-cli.org e su GitHub, le release sono coordinate con il progetto WordPress e la guida ai comandi nell'handbook per sviluppatori WordPress documenta ogni comando integrato.
I requisiti sono modesti: accesso SSH al server, PHP da riga di comando e un ambiente di tipo UNIX (Linux, macOS oppure Windows tramite WSL). Quel primo requisito è l'unico vero ostacolo. Su un hosting condiviso senza accesso SSH non puoi usare WP-CLI, mentre la maggior parte degli hosting WordPress gestiti non solo lo consente, ma lo preinstalla.
Come installare WP-CLI
Prima di installare qualsiasi cosa, verifica se è già presente. Su molti hosting basta digitare wp --info in una sessione SSH per avere la risposta. In caso contrario, l'installazione è questione di due minuti, perché WP-CLI viene distribuito come un singolo file Phar:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# Verifica l'installazione
wp --infoPer lo sviluppo locale raramente devi installarlo a mano, dato che Local, DDEV, Lando e l'ufficiale wp-env includono tutti WP-CLI. Una volta installato, i comandi si eseguono dalla directory radice di WordPress, oppure da qualsiasi posizione usando il flag --path che punta all'installazione.
Comandi WP-CLI essenziali per l'uso quotidiano
La struttura dei comandi è sempre wp, un argomento, un sottocomando e le opzioni. Ecco una panoramica di quelli che reggono la maggior parte della manutenzione reale:
# Core: controllo, aggiornamento, verifica
wp core version
wp core update
wp core verify-checksums
# Plugin: elenco, installazione, aggiornamento totale
wp plugin list
wp plugin install wordpress-seo --activate
wp plugin update --all
# I temi funzionano allo stesso modo
wp theme list
wp theme update --all
# Utenti: creare, elencare, reimpostare una password
wp user list
wp user create anna anna@example.com --role=editor
wp user update admin --user_pass="nuova-password-robusta"
# Database: esporta prima di toccare qualsiasi cosa
wp db export backup-$(date +%F).sql
wp db size --human-readableDue dettagli rendono i comandi di elenco più utili di quanto sembrino. Ogni list accetta filtri e formati di output, così wp plugin list --update=available --format=csv ti restituisce un report leggibile da una macchina degli aggiornamenti in attesa. E wp core verify-checksums confronta ogni file del core con i checksum ufficiali di WordPress.org, trasformando la domanda vaga qualcuno ha modificato i miei file del core in un sì o un no in cinque secondi. È uno dei primi comandi che vale la pena eseguire su qualsiasi sito che sospetti sia stato compromesso.
Search-replace: il comando che ripaga la configurazione
La singola funzione che converte la maggior parte degli scettici è wp search-replace. Cambiare dominio, passare da staging a produzione o migrare a HTTPS richiedono tutti la sostituzione degli URL in tutto il database. Farlo con SQL grezzo rompe WordPress, perché temi, plugin e widget salvano le impostazioni come dati PHP serializzati, dove ogni stringa è preceduta dalla propria lunghezza. Sostituisci http con https in una stringa serializzata via SQL e la lunghezza memorizzata non corrisponde più, quindi WordPress scarta silenziosamente l'intera impostazione. WP-CLI deserializza i dati, sostituisce il valore, li riserializza con le lunghezze corrette e li riscrive:
# Prima una prova a vuoto: mostra cosa cambierebbe, non cambia nulla
wp search-replace 'http://old-domain.com' 'https://new-domain.com' --dry-run
# L'esecuzione vera, con un report per tabella
wp search-replace 'http://old-domain.com' 'https://new-domain.com' --report-changed-onlyIl flag --dry-run merita un posto stabile nella tua memoria muscolare. Risponde alla domanda cosa succederebbe prima che succeda qualsiasi cosa, ed è esattamente il passaggio di conferma che al resto di WP-CLI manca.
WP-CLI per manutenzione e risoluzione dei problemi
Una manciata di comandi risolve problemi che dal browser sono davvero dolorosi:
- Amministrazione bloccata dopo un aggiornamento. Un errore fatale di un plugin può escluderti completamente da wp-admin. wp plugin deactivate broken-plugin funziona lo stesso, perché WP-CLI non ha bisogno che l'interfaccia di amministrazione venga renderizzata.
- Ispezione del cron. wp cron event list mostra ogni attività pianificata con il suo prossimo orario di esecuzione, e wp cron event run --due-now esegue quelle in ritardo. Senza questo, il debug dello pseudo-cron di WordPress è tirare a indovinare.
- Pulizia dei transient. wp transient delete --expired rimuove i transient scaduti che gonfiano la tabella delle opzioni sui siti più vecchi.
- Svuotamento della cache. wp cache flush svuota l'object cache, utile dopo i deploy quando Redis o Memcached servono dati non aggiornati.
- Regole di rewrite. wp rewrite flush risolve il classico sintomo del 404 dopo una migrazione senza passare dalla pagina delle impostazioni dei permalink.
Automatizzare WordPress con script e alias WP-CLI
Poiché ogni comando è scriptabile, WP-CLI trasforma la manutenzione ricorrente in file invece che in ricordi. Una routine settimanale di aggiornamento diventa un breve script di shell: esporta il database, aggiorna core, plugin e temi, verifica i checksum, fatto. Lo stesso script gira da un cron job o da una pipeline CI, e un ciclo su un elenco di percorsi di installazione mantiene un intero portfolio di siti.
#!/bin/bash
# Manutenzione settimanale minima per un sito
wp db export ~/backups/backup-$(date +%F).sql
wp core update
wp plugin update --all
wp theme update --all
wp core verify-checksumsPer lavorare su più ambienti, WP-CLI supporta gli alias in un file wp-cli.yml. Definisci una volta sola @staging e @production con i rispettivi dati SSH, poi wp @staging plugin list gira da remoto dal tuo terminale locale. In combinazione con il flag --ssh, il terminale del tuo portatile diventa la sala di controllo di ogni sito WordPress che gestisci.
Consigli di sicurezza per WP-CLI
L'efficienza taglia in entrambi i sensi: i comandi vengono eseguiti subito e non c'è alcun annulla. Qualche abitudine impedisce all'attrezzo potente di diventare un potente problema:
- Esporta prima dei comandi distruttivi. wp db export costa pochi secondi e trasforma un disastro in una seccatura. Comandi come db reset, site empty e search-replace ne meritano uno ogni volta.
- Usa il dry-run dove è previsto. search-replace ha --dry-run esattamente per questo motivo.
- Non eseguirlo come root. WP-CLI avvisa a voce alta, perché un processo di proprietà di root esegue il codice PHP del sito con pieni diritti di sistema e crea file che l'utente del web server non può toccare. Eseguilo con lo stesso utente con cui gira il sito.
- Prima lo staging. Qualsiasi comando che non hai mai usato prima si guadagna il debutto in produzione su una copia.
WP-CLI e InspectWP: rilevamenti dentro, correzioni fuori
Un report di InspectWP ti dice cosa richiede attenzione su un sito WordPress: una versione del core obsoleta, plugin con aggiornamenti in attesa o vulnerabilità note, temi rimasti indietro. WP-CLI è il modo più rapido per agire proprio su quei rilevamenti, dato che wp core update e wp plugin update --all risolvono la maggior parte di essi in meno di un minuto, e wp core verify-checksums ricontrolla l'integrità quando un report solleva dubbi sulla sicurezza. I due formano un ciclo naturale per chi mantiene siti WordPress in modo professionale: i report pianificati di InspectWP fanno emergere il lavoro, una sessione WP-CLI lo smaltisce e il report successivo conferma la correzione.