Nel corso degli anni, gli sviluppatori di WordPress hanno creato e mantenuto WP-CLI, una robusta interfaccia a riga di comando progettata appositamente per le operazioni di WordPress. Come strumento per risparmiare tempo, WP-CLI è particolarmente indicato per la gestione delle reti WordPress Multisito, che permettono a più siti di funzionare su un’unica installazione di WordPress.
Per utilizzare WP-CLI in modo efficace, è fondamentale conoscere i componenti chiave di WordPress: l’interfaccia amministrativa, la struttura dei file e il database. Senza queste conoscenze di base, WP-CLI potrebbe non essere così efficiente o vantaggioso.
Sebbene WP-CLI supporti comandi standard come l’installazione, l’aggiornamento, l’attivazione, la disattivazione e l’eliminazione di plugin o temi, le sue capacità vanno ben oltre quanto disponibile nella dashboard di amministrazione di WordPress, rendendolo uno strumento estremamente versatile per la gestione avanzata del sito.
Questo articolo spiega come utilizzare WP-CLI per gestire in modo efficiente le reti WordPress Multisito e fornisce esempi pratici per aiutarvi a iniziare.
Cos’è WP CLI e perché usarlo?
WP-CLI è un potente strumento per gestire i siti WordPress tramite la riga di comando. In un ambiente multisito, può semplificare notevolmente la gestione di una rete, permettendo di eseguire azioni in blocco e di snellire il flusso di lavoro.
Il suo vero punto di forza è la flessibilità e l’estensibilità: si possono eseguire senza problemi comandi su tutta la rete o su siti specifici, migliorandone funzionalità con una serie di pacchetti WP-CLI disponibili su GitHub e altri repository.
Gli sviluppatori spesso creano comandi WP-CLI personalizzati per semplificare le attività ripetitive. Ad esempio, è possibile usare WP-CLI per creare un’impalcatura di codice per temi e plugin, risparmiando tempo e fatica durante lo sviluppo.
Se avete scelto Kinsta per il vostro hosting, WP-CLI è integrato e accessibile tramite SSH, per poter gestire i siti WordPress senza alcuno sforzo. Per lo sviluppo locale, WP-CLI è disponibile in DevKinsta attraverso il contenitore devkinsta_fpm
. Una volta all’interno del contenitore, potete navigare nella cartella del sito ed eseguire i comandi. Sebbene questo richieda un po’ di configurazione, rappresenta un modo molto valido per gestire in modo efficiente i vostri siti WordPress locali per il debug, i test o la distribuzione.
Prima di iniziare
I comandi evidenziati in questo articolo sono stati scelti con cura per il loro uso frequente da parte degli sviluppatori e degli amministratori di WordPress Multisito.
WP-CLI è uno strumento ampio e flessibile, per cui è impossibile coprire tutti i comandi disponibili. Per mantenere le cose chiare e pratiche, ci siamo concentrati su esempi semplici e replicabili per aiutarvi a iniziare.
Poiché WP-CLI si basa sui comandi Unix, potreste non trovare un equivalente WP-CLI per i comandi già esistenti in Unix.
Note chiave su WP-CLI
La struttura dei comandi di WP-CLI è flessibile e permette di ottenere lo stesso risultato in più modi. Ad esempio, entrambi gli esempi qui sotto sono validi:
wp user create johndoe [email protected] --display_name="John Doe" --nickname="Johnny"
Oppure:
wp user create johndoe --display_name="John Doe" [email protected] --nickname="Johnny"
L’ordine dei flag, dei parametri e dei valori non ha importanza una volta che il comando e il sottocomando sono stati indicati.
Le best practice per l’esecuzione dei comandi WP-CLI
Seguite queste best practice per evitare potenziali problemi:
- Tenete sempre a disposizione un backup aggiornato, soprattutto perché alcuni di questi comandi modificheranno in modo permanente il sito (o i siti).
- Usate un sito di staging quando possibile. Se utilizzate Kinsta, ogni installazione di WordPress include un ambiente di staging gratuito per effettuare test sicuri. Potete facilmente trasferire le modifiche tra l’ambiente di staging e quello live.
- Usate il flag
--dry-run
per testare le modifiche al database prima di applicarle.
Comandi WP-CLI essenziali per la gestione di WordPress Multisito
I comandi WP-CLI in una rete Multisito possono essere indirizzati a diversi livelli di azione:
-
- A livello di rete – Comandi applicati a tutti i siti della rete. Ad esempio:
wp plugin deactivate --network --all
Questo comando disattiva tutti i plugin in tutti i siti della rete.
- A livello di rete – Comandi applicati a tutti i siti della rete. Ad esempio:
-
- Sito principale – Comandi applicati al sito principale creato durante la configurazione del Multisito. Ad esempio:
wp plugin list
Il comando precedente elenca tutti i plugin installati solo sul sito principale.
- Sito principale – Comandi applicati al sito principale creato durante la configurazione del Multisito. Ad esempio:
- Siti secondari – Comandi rivolti a singoli siti della rete, specificati dai loro URL. Ad esempio:
wp plugin update --url=mysite.example.com akismet
Questo comando aggiorna il plugin
akismet
sul sitomysite.example.com
.
Per facilitare la gestione della rete Multisito, abbiamo raggruppato i comandi WP-CLI in queste sezioni:
Comandi di base
Questi comandi fondamentali aiutano a risolvere i problemi e a gestire i plugin e i temi della rete.
Lavorare con gli elenchi
WP-CLI permette di recuperare facilmente gli elenchi di plugin e altri componenti dell’ambiente Multisito.
-
- Ottenere un elenco di tutti i plugin presenti nella rete:
wp plugin list --network
Output: un elenco di tutti i plugin installati in rete con dettagli quali nome, stato, aggiornamenti disponibili e versione.
- Ottenere un elenco di tutti i plugin presenti nella rete:
-
- Filtrare i plugin per stato (ad esempio, attivo):
wp plugin list --network --status=active
Output: una tabella dei plugin attivi nella rete.
- Filtrare i plugin per stato (ad esempio, attivo):
-
- Ottenere un elenco di plugin dal sito primario:
wp plugin list
Output: un elenco di plugin per il sito primario.
- Ottenere un elenco di plugin dal sito primario:
- Ottenere un elenco di plugin attivi per un singolo sito:
wp plugin list --url=<site-url> --status=active
Esempio di input:
wp plugin list --url=blog.example.com --status=active
Output: una tabella di plugin attivi per il sito
blog.example.com
.
Oltre a filtrare i plugin per status=active
, potete anche utilizzare i seguenti filtri:
inactive
: plugin installati ma non attivi.active-network
: plugin attivi in rete.must-use
: plugin indispensabili che si caricano automaticamente.
Disattivare i plugin
La disattivazione dei plugin è spesso necessaria quando si fa troubleshooting o si preparano gli aggiornamenti. WP-CLI permette di disattivare i plugin in tutta la rete o per siti specifici.
-
- Disattivare tutti i plugin della rete:
wp plugin deactivate --network --all
Risultato: tutti i plugin della rete sono disattivati.
- Disattivare tutti i plugin della rete:
- Disattivare plugin specifici per un singolo sito:
wp plugin deactivate <plugin-slug-1> <plugin-slug-2> --url=<site-url>
Esempio di input:
wp plugin deactivate akismet hello-dolly --url=blog.example.com
Risultato: i plugin
akismet
ehello-dolly
sono disattivati per il sitoblog.example.com
.
Attivare i plugin
Usate questi comandi per attivare i plugin a livello di rete o per i singoli siti della configurazione Multisito.
-
- Attivare tutti i plugin della rete:
wp plugin activate --network --all
Risultato: tutti i plugin della rete sono attivati.
- Attivare tutti i plugin della rete:
- Attivare plugin specifici per un singolo sito:
wp plugin activate <plugin-slug-1> <plugin-slug-2> --url=<site-url>
Esempio di input:
wp plugin activate akismet hello-dolly --url=blog.example.com
Risultato: i plugin
akismet
ehello-dolly
sono attivati per il sitoblog.example.com
.
Installare i plugin
L’installazione dei plugin con WP-CLI è rapida ed efficiente. Una volta installati, i plugin possono essere attivati per singoli siti o per tutta la rete.
Il seguente comando può essere utilizzato per installare un plugin per la rete:
wp plugin install <plugin-slug>
Esempio di input:
wp plugin install akismet
Risultato: il plugin akismet
è installato e pronto per essere attivato.
Aggiornare i plugin
Tenete aggiornati i vostri plugin in tutta la rete o per siti specifici utilizzando questi comandi.
-
- Aggiornare tutti i plugin della rete:
wp plugin update --network --all
Risultato: tutti i plugin della rete vengono aggiornati.
- Aggiornare tutti i plugin della rete:
-
- Aggiornare plugin specifici in tutta la rete:
wp plugin update <plugin-slug-1> <plugin-slug-2> --network
Esempio di input:
wp plugin update akismet jetpack bbpress --network
Risultato: i plugin
akismet
,jetpack
ebbpress
vengono aggiornati in tutta la rete.
- Aggiornare plugin specifici in tutta la rete:
- Aggiornare un plugin per un singolo sito:
wp plugin update --url=<site-url> <plugin-slug>
Esempio di input:
wp plugin update --url=blog.example.com hello-dolly
Risultato: il plugin
hello-dolly
viene aggiornato per il sitoblog.example.com
.
Eliminare i plugin
La rimozione dei plugin è semplice con WP-CLI, sia che stiate lavorando su un singolo sito che su una rete multisito.
-
- Eliminare un plugin dal contesto WordPress corrente (rete o sito):
wp plugin delete <plugin-slug>
Esempio di input:
wp plugin delete bbpress
Risultato: il plugin
bbpress
viene eliminato.
- Eliminare un plugin dal contesto WordPress corrente (rete o sito):
- Eliminare un plugin per un sito specifico in un Multisito:
wp plugin delete <plugin-slug> --url=<site-url>
Esempio di input:
wp plugin delete bbpress --url=blog.example.com
Risultato: il plugin
bbpress
viene eliminato dal sitoblog.example.com
.
Gestione della rete
La gestione dei siti all’interno di una rete WordPress Multisito è un compito fondamentale. Di seguito sono riportati i comandi WP-CLI più comuni per creare, gestire ed eliminare i siti in modo efficiente, oltre a gestire le operazioni di caching.
Creare siti
Aggiungere nuovi siti alla rete è semplice con WP-CLI.
-
- Comando base. Creare un nuovo sito specificando uno slug unico.
wp site create --slug=<site-name>
Esempio di input:
wp site create --slug=blog
Risultato: un nuovo sito
blog.example.com
oexample.com/blog
, a seconda della configurazione della rete, viene creato e si attiva automaticamente.
- Comando base. Creare un nuovo sito specificando uno slug unico.
-
- Comando avanzato. In alternativa, è possibile aggiungere dei flag al comando. Nell’esempio seguente, viene aggiunto un sito con un titolo e un amministratore del sito specificati.
wp site create --slug=<site-name> --title="<site-title>" --email=<admin-email>
Esempio di input:
wp site create --slug=blog --title="Blog Site" [email protected]
Risultato: Viene creato un sito intitolato “Blog Site” con
[email protected]
come amministratore.
- Comando avanzato. In alternativa, è possibile aggiungere dei flag al comando. Nell’esempio seguente, viene aggiunto un sito con un titolo e un amministratore del sito specificati.
- Elencare tutti i siti. Recupera una tabella con gli ID dei siti, gli URL, le date di creazione e le date di ultimo aggiornamento:
wp site list
Potete anche filtrare l’elenco dei siti per ottenere solo gli URL di tutti i siti della rete:
wp site list --field=url
Output: un elenco di URL per ogni sito.
Svuotare e cancellare i siti
-
- Svuotare il sito principale:
wp site empty
Output: viene visualizzata una richiesta di conferma per eliminare tutti i contenuti del sito primario.
- Svuotare il sito principale:
-
- Svuotare un singolo sito (rimuove tutti i post, le pagine, i link e le tassonomie):
wp site empty --url=<site-url>
Esempio di input:
wp site empty --url=blog.example.com
Risultato: tutti i contenuti di
blog.example.com
vengono eliminati, ma il sito rimane intatto.
- Svuotare un singolo sito (rimuove tutti i post, le pagine, i link e le tassonomie):
-
- Svuotare tutti i siti della rete:
wp site list --field=url | xargs -n1 -I % wp site empty --url=% --yes
Risultato: questo comando avvia un ciclo attraverso tutti gli URL e procede a svuotare i contenuti di ogni sito senza dover fornire l’approvazione per ogni sito.
- Svuotare tutti i siti della rete:
-
- Eliminare un singolo sito per ID:
wp site delete <site-id>
Esempio di input:
wp site delete 5
Risultato: il sito con ID
5
viene eliminato.
- Eliminare un singolo sito per ID:
- Eliminare più siti con un bypass di conferma:
wp site delete 2 --yes wp site delete 3 --yes
Risultato: i siti con ID
2
e3
vengono eliminati. Il flag--yes
aiuta a saltare le richieste.
Cancellare la cache
Poiché molti tipi di cache vengono memorizzati in modi diversi, utilizziamo il plugin Kinsta Must-Use. Viene installato automaticamente per ogni sito WordPress del nostro sistema.
In questo modo si cancellano tutte le cache, comprese la cache del sito, la cache edge, la cache del CDN e la cache di Redis.
- Cancellare tutte le cache (sito, edge, CDN e Redis):
wp kinsta cache purge --all
- Cancellare solo la cache del sito:
wp kinsta cache purge --site
- Cancellare la cache del CDN:
wp kinsta cache purge --cdn
- Cancellare la cache degli oggetti:
wp cache purge
Gestione degli utenti
WP-CLI semplifica la gestione degli utenti in un ambiente Multisito, permettendo di eseguire le operazioni in modo rapido ed efficiente. Questa sezione tratta le operazioni più comuni di gestione degli utenti:
Elencare gli utenti
Elencare gli utenti di una rete o di un sito specifico è semplice con WP-CLI.
-
- Elencare tutti gli utenti della rete:
wp user list --network
Output: mostra una tabella che mostra l’ID utente, il login, il nome visualizzato, il nome utente, la data di registrazione e il ruolo per ogni utente o per la query dell’elenco utenti.
- Elencare tutti gli utenti della rete:
-
- Elenco utenti per il sito principale:
wp user list
Risultato: mostra una tabella di utenti per il sito primario.
- Elenco utenti per il sito principale:
- Elencare gli utenti di un sito specifico (sito secondario):
wp user list --blog_id=<id> wp user list --url=<url>
Esempio di input:
wp user list --blog_id=6
Risultato: mostra una tabella di tutti gli utenti del sito con ID Blog
6
.
Creare utenti
In una rete Multisito, gli utenti sono registrati alla rete per impostazione predefinita. I loro ruoli dipendono dal fatto che siano il primo utente aggiunto a un sito o gli utenti successivi. I nomi utente devono essere lunghi almeno quattro caratteri.
-
- Aggiungere un nuovo utente al sito principale:
wp user create <username> <email>
Esempio di input:
wp user create johndoe [email protected]
Output: Viene visualizzato un messaggio di successo che include la password generata.
- Aggiungere un nuovo utente al sito principale:
-
- Aggiungere un nuovo utente a un sito specifico con un ruolo specificato:
wp user create <username> <email> --role=<role> --url=<url>
Esempio di input:
wp user create janedoe [email protected] --role=editor --url=blog.example.com
Output: l’utente
janedoe
viene aggiunto al sitoblog.example.com
come “Editor”.
- Aggiungere un nuovo utente a un sito specifico con un ruolo specificato:
- Aggiungere il meta account utente durante la creazione:
wp user create <username> <email> --display_name=<name> --nickname=<nickname>
Esempio di input:
wp user create johndoe [email protected] --display_name="John Doe" --nickname="Johnny"
Risultato: l’utente
johndoe
viene creato con il nome visualizzatoJohn Doe
e il nicknameJohnny
.
Aggiornare l’utente
Aggiornare le informazioni dell’utente, come i ruoli o le password, è un’operazione veloce con WP-CLI.
-
- Cambiare (promuovere o declassare) i ruoli degli utenti:
wp user update <username|email|user_id> --role=<role>
Esempio di input:
wp user update johndoe janedoe adminuser --role=super-administrator
Risultato: gli utenti
johndoe
,janedoe
eadminuser
sono promossi a Super Admin.
- Cambiare (promuovere o declassare) i ruoli degli utenti:
-
- Reimpostare o modificare la password di un utente:
wp user update <username> --user_pass=<new_password>
Esempio di input:
wp user update johndoe --user_pass=securePassword2024
Risultato: la password di
johndoe
è aggiornata.
- Reimpostare o modificare la password di un utente:
- Comandi a catena: WP-CLI permette di combinare più azioni in un unico comando, risparmiando tempo durante la modifica degli utenti. Ad esempio, potete aggiornare contemporaneamente la password e il ruolo di un utente.
wp user update <user> --user_pass=<new_password> --role=<status>
Esempio di input:
wp user update johndoe --user_pass="newPassword2024" --role=editor
Risultato: la password dell’utente
johndoe
viene aggiornata anewPassword2024
e il suo ruolo viene modificato in “Editor”.
Gestire i meta-utenti
Un meta utente permette di aggiungere, recuperare o eliminare i metadati degli account utente.
-
- Ottenere i metadati dell’utente:
wp user meta get <username> <meta_key>
Esempio di input:
wp user meta get johndoe nickname
Output: mostra il valore della meta-chiave
nickname
per l’utentejohndoe
.
- Ottenere i metadati dell’utente:
-
- Aggiungere un meta utente:
wp user meta add <username> <meta_key> <meta_value>
Esempio di input:
wp user meta add johndoe display_name "Mr. John Doe"
Risultato:
Mr. John Doe
è impostato come nome visualizzato per l’utentejohndoe
.
- Aggiungere un meta utente:
- Eliminare il meta utente:
wp user meta delete <username> <meta_key>
Esempio di input:
wp user meta delete johndoe display_name
Risultato: questo comando cancella la meta-chiave
display_name
per l’utentejohndoe
.
Eliminare gli utenti
Rimuovere gli utenti dalla rete o da siti specifici è semplice e veloce con WP-CLI.
-
- Eliminare un utente dalla rete:
wp user delete <username|user_id> --network
Esempio di input:
wp user delete johndoe --network
Risultato: l’utente
johndoe
viene rimosso dalla rete.
- Eliminare un utente dalla rete:
- Eliminare un utente da un sito specifico:
wp user delete <username|user_id> --url=<site-url>
Esempio di input:
wp user delete johndoe --url=mysite.example.com
Risultato: l’utente
johndoe
viene rimosso dal sitomysite.example.com
.
Gestione del database
WP-CLI offre un’interessante alternativa a strumenti come phpMyAdmin per la gestione del vostro database. Questa sezione tratta le operazioni comuni sul database che potete eseguire con WP-CLI:
Esportare un database
Con WP-CLI potete esportare il vostro database come file SQL. Il file esportato viene salvato nella directory principale dell’installazione di WordPress.
wp db export
Risultato: viene creato un file SQL nella directory principale.
Se il file esportato ha un nome poco elegante, potete rinominarlo usando il seguente comando:
wp eval 'if ( rename( "unganglyfilename.sql", "newfilename.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'
Esempio di input:
wp eval 'if ( rename( "cilawawugo4504_gTr4kSXUsmJ9FNauVnPb-2024-11-17-9545b3f.sql", "network-db.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'
Risultato: il file cilawaw…nPb--9545b3f.sql
viene rinominato in network-db.sql
.
Scaricare un database
Per scaricare il file del database esportato sul vostro computer locale, utilizzate il comando curl
.
curl <remote-url> -o <local-path>
Esempio di input:
curl example.com/network-db.sql -o ~/Downloads/network-db.sql
Risultato: il file network-db.sql
viene scaricato nella directory locale Downloads
.
Caricare un database
Potete caricare un file di database nella directory principale della vostra installazione Multisito utilizzando il comando scp
.
scp <local-path-to-file> <username>@<remote-server>:<remote-path>
Esempio di input:
scp ~/Downloads/network-db.sql [email protected]:/var/www/example.com/public_html
Risultato: il file network-db.sql
viene caricato nella directory principale dell’installazione di WordPress dopo l’autenticazione.
Importare un database
Prima di importare un database, potrebbe essere necessario reimpostare le tabelle di dati esistenti.
-
- Azzerare le tabelle di dati:
wp db reset
Risultato: Tutte le tabelle di dati del database vengono svuotate.
- Azzerare le tabelle di dati:
-
- Importare il database:
wp db import <file-name.sql>
Esempio di input:
wp db import network-db.sql
Risultato: il file
network-db.sql
popola le tabelle di dati svuotate.
- Importare il database:
- Eliminare il file SQL importato: per motivi di sicurezza, elimina il file SQL dopo l’importazione:
rm <file-name.sql>
Esempi pratici
Possiamo pensare a molti comandi che velocizzeranno e semplificheranno il vostro flusso di lavoro. Ecco tre esempi. Sebbene alcuni di questi comandi siano più complessi, si basano su comandi più semplici per eseguire operazioni utili.
Installare e attivare i plugin e rigenerare le miniature contemporaneamente.
Questo comando esegue un loop di tutti i siti della rete, installa e attiva due plugin e rigenera le miniature delle immagini per ogni sito.
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin activate <plugin slug> <plugin slug> --url=% && wp media regenerate --url=%'
Esempio di input:
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin install akismet bbpress --activate --url=% && wp media regenerate --url=%'
Risultato: i plugin Akismet
e BBPress
sono installati e attivati su tutti i siti e le miniature delle immagini vengono rigenerate.
Aggiungere un meta-campo personalizzato per tutti gli utenti
Questo comando esegue un loop su tutti i siti, recupera l’elenco degli utenti e aggiunge un meta-campo personalizzato per ogni utente.
wp site list --field=url | xargs -n1 -I % sh -c 'wp user list --fields=ID --url=% --format=csv | tail -n +2 | xargs -n1 -I {} wp user meta add {} <meta-key> <meta-value> --url=%'
Esempio di input:
wp site list --field=url | xargs -n1 -I % sh -c 'wp user list --fields=ID --url=% --format=csv | tail -n +2 | xargs -n1 -I {} wp user meta add {} favorite_color "" --url=%'
Risultato: viene aggiunto un meta-campo personalizzato, favorite_color
, per tutti gli utenti di tutti i siti.
Per visualizzare il campo favorite_color
, dovrete utilizzare il vostro file functions.php
o creare un plugin personalizzato.
Conversione di un sito singolo in un Multisito
WP-CLI semplifica la conversione di un sito WordPress indipendente in un network multisito.
wp core multisite-convert
Risultato: il sito singolo viene convertito in una rete multisito.
Prima della conversione, assicuratevi di disattivare tutti i plugin.
Dopo la conversione del sito, dovrete configurare gli URL della rete nel file wp-config.php
. Potete scegliere se utilizzare dei sottodomini (ad esempio, site.example.com) o delle sottodirectory (ad esempio, example.com/site). Inoltre, controllate il file .htaccess
, poiché le regole di riscrittura degli URL (gestite dal modulo mod_rewrite di Apache) potrebbero richiedere aggiornamenti manuali per garantire che i permalink e la struttura del sito funzionino correttamente.
Riepilogo
Questa guida mette in evidenza la potenza e la flessibilità di WP-CLI per la gestione degli ambienti WordPress Multisito, rendendolo uno strumento essenziale per gli sviluppatori e gli amministratori che cercano efficienza e controllo. Dalla gestione di plugin, utenti e database all’esecuzione di operazioni avanzate come la conversione di siti singoli in Multisito, WP-CLI semplifica attività complesse con precisione e velocità.
Kinsta offre uno strumento WP-CLI prezioso ed estensibile che consente di gestire senza problemi le reti WordPress Multisito. Sia che stiate lavorando su ambienti live o di staging, o che stiate usando il nostro strumento di sviluppo locale, DevKinsta, WP-CLI è prontamente disponibile per ottimizzare il vostro flusso di lavoro.
Iniziate subito a creare siti, aggiungere plugin, utenti e molto altro con WP CLI!
Lascia un commento