Skip to content

Tutto per WordPress, lo sviluppo web — e non solo

🧹 Come eliminare in blocco gli utenti WordPress con un ruolo specifico

🧹 Come eliminare in blocco gli utenti WordPress con un ruolo specifico

Milleduecento registrazioni spam dopo una campagna pubblicitaria. Trecento account di test che nessuno ha cancellato dopo il lancio. Un centinaio di Contributor inattivi da sei mesi. Tutto questo giace nel database del sito come peso morto, che cresce ogni mese.

Cancellare questa zavorra uno per uno è un lavoro da robot, non da umano. La tabella standard di WordPress mostra 20 utenti per pagina. Con un migliaio di account, significa 50 clic su «Elimina» e 50 conferme. Dopo la seconda dozzina, viene voglia di chiudere il browser e far finta che il problema non esista.

Ma puoi risolvere il problema in cinque minuti. WordPress mette a disposizione quattro strumenti per la pulizia massiva degli utenti per ruolo: dal filtro integrato che non richiede alcun plugin, fino all'SQL diretto in phpMyAdmin. Li vedremo uno per uno con istruzioni, screenshot e, cosa più importante, come evitare di bloccarsi fuori dal sito.

💡 Panoramica rapida:

  • Esegui un backup completo del database e dei file; non è un consiglio, è un'assicurazione contro i disastri
  • Filtra gli utenti per ruolo usando le azioni di gruppo integrate; funziona per un centinaio o due di account
  • Installa Bulk Delete se hai bisogno di filtri granulari: per data di registrazione, inattività o assenza di articoli
  • Con WP-CLI, il compito si risolve con un solo comando, qualsiasi volume, incluse decine di migliaia
  • L'SQL diretto dà il controllo assoluto ma richiede attenzione: un errore di battitura nella WHERE può costarti l'accesso amministratore

Cosa fare prima di eliminare

Tre azioni che ti salvano da conseguenze irreversibili. Saltarne anche una sola mette a rischio non solo i contenuti, ma la funzionalità del sito.

Backup completo. Un backup del database e dei file è l'unico modo per annullare una cancellazione di massa. UpdraftPlus funziona bene (invia i backup su Google Drive, Dropbox o il tuo S3), così come WPvivid. Su un hosting con cPanel, usa la Backup Wizard integrata; è più veloce e non carica i worker PHP.

Esporta la lista utenti. Se i dati degli account che verranno eliminati potrebbero servire per audit o report, esportali prima. Percorso: «Utenti» → «Tutti gli utenti» → pulsante «Esporta» in alto → formato CSV. Salva il file in locale. Non puoi ripristinare un account dopo un DELETE dal database, solo da un backup.

Revisione dei contenuti. Filtra gli utenti per ruolo e guarda la colonna «Articoli» per vedere quanti post e pagine resteranno senza autore. Decidi in anticipo: al momento dell'eliminazione, trasferirai i contenuti a un amministratore o li cancellerai insieme agli account? I commenti degli utenti eliminati restano sul sito (l'autore viene visualizzato come «Utente eliminato»); questo non li influenza.

Metodo 1: azioni di gruppo integrate

Nessun plugin necessario. Tutto ciò che serve è già nel core di WordPress. Funziona per volumi fino a un paio di centinaia di account in una volta sola; oltre, iniziano rallentamenti e timeout.

Passo 1: filtra per ruolo. Vai su «Utenti» → «Tutti gli utenti». Sopra la tabella c'è un menu a tendina con l'elenco dei ruoli. Seleziona quello che ti serve (per esempio, «Subscriber») e clicca su «Filtra». WordPress mostrerà solo gli utenti con quel ruolo.

Filtraggio degli utenti di WordPress per ruolo nel pannello di amministrazione

Passo 2: elementi per pagina. Di default vedi 20 voci. Per un lavoro massivo, non bastano. Il pulsante «Opzioni schermata» (in alto a destra) apre un pannello dove puoi impostare il campo «Numero di elementi per pagina» a 200, 500 o anche 999. Clicca «Applica», la pagina si ricaricherà e mostrerà l'intera lista in un'unica infornata.

Impostazione del numero di elementi per pagina nel pannello di amministrazione di WordPress

Passo 3: selezione massiva. La casella di controllo nell'intestazione della tabella (accanto alla voce «Nome utente») seleziona tutti gli utenti della pagina in una volta sola. Dopodiché, deseleziona manualmente quelli che vuoi tenere: amministratori, editor, autori chiave.

Selezione in blocco di tutti gli utenti nella pagina per l'eliminazione

Passo 4: eliminazione e riassegnazione dei contenuti. Nel menu a tendina «Azioni di gruppo» sopra la tabella, seleziona «Elimina» e clicca «Applica». WordPress chiederà cosa fare con i contenuti degli utenti in eliminazione: l'opzione «Attribuisci tutti i contenuti a» più la selezione di un amministratore nel campo adiacente conserva gli articoli; «Elimina tutti i contenuti» cancella tutto senza possibilità di recupero. Conferma, ed è fatta.

Finestra di dialogo per l'attribuzione dei contenuti durante l'eliminazione in blocco degli utenti

Il metodo integrato è affidabile per volumi piccoli e medi. Ma quando hai a che fare con migliaia di account, ogni pagina genera dozzine di query SQL tramite PHP, e il server o va in crash per il max_execution_time o si blocca del tutto. Per questi casi, usa gli strumenti descritti di seguito.

Metodo 2: plugin Bulk Delete

Bulk Delete è un plugin gratuito con oltre 300.000 installazioni attive. Il suo principale vantaggio rispetto al metodo standard è l'elaborazione batch. Il plugin elimina gli utenti in lotti da 50-100, senza generare picchi di carico sul database. Inoltre offre filtri che non esistono nel core di WordPress.

L'installazione è standard: «Plugin» → «Aggiungi nuovo» → cerca «Bulk Delete» → «Installa» → «Attiva». Dopo l'attivazione, nel menu laterale compare la sezione «Bulk WP» e, al suo interno, «Bulk Delete Users».

Qui selezioni il ruolo da eliminare e configuri uno o più filtri aggiuntivi:

  • data di registrazione: prima o dopo una data specificata;
  • inattività: utenti che non hanno effettuato l'accesso negli ultimi N giorni;
  • nessun articolo: account senza nemmeno un articolo pubblicato;
  • valore di un meta field: ad esempio, eliminare chiunque abbia billing_country = 'RU'.
Pagina di eliminazione massiva degli utenti del plugin Bulk Delete

Prima di avviare l'eliminazione, ricordati di cliccare su «Preview Users»; il plugin mostrerà un elenco di ID ed email corrispondenti ai filtri. Verifica di stare eliminando esattamente gli utenti che intendi rimuovere. Poi spunta la casella di conferma e clicca su «Bulk Delete».

Tra le alternative degne di nota ci sono WP Bulk Delete, che può eliminare non solo utenti ma anche articoli, pagine, commenti e tassonomie (un pulitore universale, anche se alcune funzionalità sono nella versione Pro), e User Role Editor, che è principalmente uno strumento per modificare i ruoli e crearne di personalizzati, ma nella sua interfaccia offre anche l'eliminazione massiva per ruolo (scheda «Users»).

Metodo 3: WP-CLI

WP-CLI risolve il problema con un singolo comando da console. Nessuna paginazione, nessun timeout. Serve accesso shell al server (SSH su VPS, hosting dedicato o ambiente di sviluppo locale). Sugli hosting condivisi economici, WP-CLI di solito non è disponibile.

Per prima cosa, ottieni gli ID di tutti gli utenti con il ruolo desiderato:

1wp user list --role=subscriber --format=ids

L'output è una stringa di ID separati da spazio: 12 45 78 134 256. Eliminali con riassegnazione dei contenuti all'amministratore (ID=1):

1wp user delete 12 45 78 134 256 --reassign=1

Puoi farlo in un unico comando, senza la lista intermedia:

1wp user delete $(wp user list --role=subscriber --format=ids) --reassign=1

Il flag --delete-posts al posto di --reassign cancella completamente sia gli utenti sia i loro contenuti. Usalo solo se sei certo che i contenuti degli account eliminati non servano.

WP-CLI lavora direttamente con il database, bypassando PHP. Per centomila utenti, il comando viene eseguito in 2-5 secondi. È ordini di grandezza più veloce di qualsiasi plugin e più sicuro dell'SQL manuale, perché wp user delete propaga la pulizia attraverso i metadati senza lasciare righe orfane.

Metodo 4: SQL diretto

Per chi ha bisogno del controllo assoluto su ogni query. SQL tramite phpMyAdmin o la console MySQL non impone restrizioni, ma non perdona gli errori.

Prima di tutto, fate un backup del database. Non è un consiglio, è un requisito tassativo. Un errore di battitura nella clausola WHERE (ad esempio, administrator invece di subscriber) e perdete l'accesso al sito. Il ripristino è possibile solo da un dump.

Accedete a phpMyAdmin dal pannello di hosting, selezionate il database di WordPress e aprite la scheda "SQL".

Passo 1: trovare gli ID. I ruoli sono memorizzati nella tabella wp_usermeta, campo meta_key = 'wp_capabilities'. Sostituite subscriber con il ruolo desiderato e adattate il prefisso wp_ se è diverso:

1SELECT u.ID, u.user_login, u.user_email
2FROM wp_users u
3JOIN wp_usermeta um ON u.ID = um.user_id
4WHERE um.meta_key = 'wp_capabilities'
5AND um.meta_value LIKE '%subscriber%';

Controllate visivamente il risultato. Copiate gli ID ottenuti.

Passo 2: riassegnare i contenuti. Sostituite 1 con l'ID dell'utente a cui state trasferendo gli articoli. L'elenco 123, 456, 789 deve contenere gli ID del passo 1:

1UPDATE wp_posts
2SET post_author = 1
3WHERE post_author IN (123, 456, 789);

Passo 3: eliminare utenti e metadati. Esattamente in questo ordine:

1DELETE FROM wp_users WHERE ID IN (123, 456, 789);
2DELETE FROM wp_usermeta WHERE user_id IN (123, 456, 789);

Se dovete eliminare anche articoli e commenti, pulite prima le tabelle figlie:

1DELETE FROM wp_comments WHERE user_id IN (123, 456, 789);
2DELETE FROM wp_posts WHERE post_author IN (123, 456, 789);

E solo dopo, wp_users e wp_usermeta. L'ordine è critico: prima i record figli, poi quelli padri, altrimenti otterrete violazioni di chiavi esterne.

Dopo aver eseguito l'SQL, verificate sempre che gli utenti eliminati siano effettivamente scomparsi dal pannello di amministrazione e che gli articoli (se li avete riassegnati) siano visibili sotto il nuovo autore.

⁉️🤔 Domande frequenti

Un utente eliminato può essere ripristinato?

No. WordPress non conserva gli account eliminati in un cestino, a differenza di articoli e pagine. L'unico modo per recuperarli è ripristinare un backup del database. È proprio per questo che un backup completo prima di qualsiasi eliminazione di massa è irrinunciabile: è la vostra unica assicurazione.

Cosa succede ai contenuti di un utente eliminato?

Dipende dalla scelta fatta durante l'eliminazione. L'opzione "Attribuisci tutto il contenuto a" con un amministratore fa sì che articoli e pagine vengano conservati, solo con un autore diverso. L'opzione "Elimina tutto il contenuto" cancella articoli, pagine e file media senza possibilità di recupero. I commenti degli utenti eliminati restano sul sito, con l'autore visualizzato come "Utente eliminato"; la loro cancellazione è un'operazione separata.

Qual è il metodo più veloce per oltre 10.000 utenti?

WP-CLI. Un singolo comando wp user delete $(wp user list --role=subscriber --format=ids) --reassign=1 viene eseguito in 2-5 secondi anche per centomila account. Anche l'SQL tramite phpMyAdmin è veloce, ma richiede di copiare manualmente gli ID tra le query. I plugin e il metodo integrato sono inutilizzabili per questi volumi: elaborano i dati via PHP e incontrano i limiti di max_execution_time.

Devo eliminare wp_usermeta insieme agli utenti?

Sì. Se eliminate solo wp_users, nella tabella wp_usermeta rimarranno righe orfane con metadati di account inesistenti. Non rompono il sito, ma gonfiano il database. Il plugin Bulk Delete e WP-CLI (wp user delete) puliscono i metadati automaticamente. Con SQL manuale, ricordatevi di aggiungere una seconda query: DELETE FROM wp_usermeta.

Posso eliminare solo gli utenti senza articoli?

Sì. Il plugin Bulk Delete ha un filtro già pronto "Utenti senza articoli". In WP-CLI, concatenate due comandi: prima ottenete gli ID degli utenti con il ruolo, poi per ognuno verificate la presenza di articoli con wp post list. In SQL, aggiungete la condizione AND u.ID NOT IN (SELECT DISTINCT post_author FROM wp_posts).

Ora parliamo di sicurezza nella pratica. Lo scenario più pericoloso è l'eliminazione via SQL senza anteprima. Anche gli amministratori esperti commettono errori nella clausola WHERE. Un backup prima di usare SQL è una regola che ripaga una volta su cento. Ma quella volta è quando salva il sito.

Cosa scegliere per il vostro compito

Quattro metodi coprono qualsiasi scenario, da un paio di dozzine di registrazioni spam a centomila account morti. Ecco una matrice rapida:

  • Meno di 200 utenti, non volete installare plugin → azioni di gruppo integrate. Tre clic e il problema è risolto.
  • Fino a 5.000, servono filtri per data o inattività → plugin Bulk Delete. L'opzione più sicura per chi non lavora con la console.
  • Qualsiasi volume, avete accesso SSH → WP-CLI. Un comando, 2-5 secondi, fatto.
  • Server proprio, serve controllo su ogni DELETE → SQL diretto. Ma solo se sapete esattamente cosa state facendo e avete fatto un backup.

La regola principale non dipende dal metodo: backup, backup e ancora backup. Il database di WordPress non perdona le cancellazioni accidentali e l'hosting non conserva le copie per sempre. Fate un backup adesso e solo dopo aprite l'elenco utenti.