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.

    • 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.

  • 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 sito mysite.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.

    1. 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.

    1. Filtrare i plugin per stato (ad esempio, attivo):
      wp plugin list --network --status=active

      Output: una tabella dei plugin attivi nella rete.

    1. Ottenere un elenco di plugin dal sito primario:
      wp plugin list

      Output: un elenco di plugin per il sito primario.

  1. 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.

    1. Disattivare tutti i plugin della rete:
      wp plugin deactivate --network --all

      Risultato: tutti i plugin della rete sono disattivati.

  1. 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 e hello-dolly sono disattivati per il sito blog.example.com.

Attivare i plugin

Usate questi comandi per attivare i plugin a livello di rete o per i singoli siti della configurazione Multisito.

    1. Attivare tutti i plugin della rete:
      wp plugin activate --network --all

      Risultato: tutti i plugin della rete sono attivati.

  1. 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 e hello-dolly sono attivati per il sito blog.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.

    1. Aggiornare tutti i plugin della rete:
      wp plugin update --network --all

      Risultato: tutti i plugin della rete vengono aggiornati.

    1. 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 e bbpress vengono aggiornati in tutta la rete.

  1. 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 sito blog.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.

    1. 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.

  1. 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 sito blog.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 o example.com/blog, a seconda della configurazione della rete, viene creato e si attiva automaticamente.

    • 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.

  • 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

    1. Svuotare il sito principale:
      wp site empty

      Output: viene visualizzata una richiesta di conferma per eliminare tutti i contenuti del sito primario.

    1. 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.

    1. 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.

    1. 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.

  1. Eliminare più siti con un bypass di conferma:
    wp site delete 2 --yes
    wp site delete 3 --yes

    Risultato: i siti con ID 2 e 3 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.

  1. Cancellare tutte le cache (sito, edge, CDN e Redis):
    wp kinsta cache purge --all
  2. Cancellare solo la cache del sito:
    wp kinsta cache purge --site
  3. Cancellare la cache del CDN:
    wp kinsta cache purge --cdn
  4. 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.

    1. 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.

    1. Elenco utenti per il sito principale:
      wp user list

      Risultato: mostra una tabella di utenti per il sito primario.

  1. 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.

    1. 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.

    1. 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 sito blog.example.com come “Editor”.

  1. 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 visualizzato John Doe e il nickname Johnny.

Aggiornare l’utente

Aggiornare le informazioni dell’utente, come i ruoli o le password, è un’operazione veloce con WP-CLI.

    1. 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 e adminuser sono promossi a Super Admin.

    1. 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.

  1. 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 a newPassword2024 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.

    1. 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’utente johndoe.

    1. 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’utente johndoe.

  1. 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’utente johndoe.

Eliminare gli utenti

Rimuovere gli utenti dalla rete o da siti specifici è semplice e veloce con WP-CLI.

    1. 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.

  1. 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 sito mysite.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.

    1. Azzerare le tabelle di dati:
      wp db reset

      Risultato: Tutte le tabelle di dati del database vengono svuotate.

    1. 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.

  1. 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!

Bud Kraus

Bud Kraus has been working with WordPress as an in-class and online instructor, site developer, and content creator since 2009. He has produced instructional videos and written many articles for WordPress businesses.