
⌨️ Come aggiungere un menu a discesa degli autori nella schermata Tutti gli articoli in WordPress
Il filtro predefinito «Mine» nella schermata «Tutti gli articoli» di WordPress mostra solo gli articoli dell'utente corrente. Funziona finché sei l'unico autore. Ma quando sul sito lavorano tre editor, cinque contributor e un paio di esperti ospiti, capire chi ha scritto cosa diventa uno scorrere infinito di una tabella.
L'interfaccia nativa di WordPress non offre un menu a tendina per gli autori accanto ai filtri di data e categoria. Gli sviluppatori hanno deliberatamente limitato la schermata, dando per scontato che il filtro «Mine» basti agli amministratori. Nella pratica, è catastroficamente insufficiente.
Puoi aggiungere un menu a tendina per gli autori senza un plugin, usando un singolo snippet PHP pulito. Il codice si aggancia agli hook nativi dell'amministrazione e non entra in conflitto con altri filtri. Il menu a tendina degli autori funziona insieme al pulsante nativo «Filtra».
💡 Panoramica rapida:
- Registriamo l'hook
admin_initin modo che il codice funzioni solo nel pannello di amministrazione e non influisca sul frontend - Emettiamo
wp_dropdown_users()tramiterestrict_manage_postscosì che il select appaia nella riga dei filtri accanto a data e categoria - Limitiamo l'ambito tramite
get_current_screen()solo ad articoli e pagine, lasciando intatti i CPT - L'autore selezionato viene ricordato tramite
get_query_var('author')e funziona insieme agli altri filtri
Come funziona sotto il cofano
WordPress renderizza i filtri nelle schermate elenco attraverso l'hook restrict_manage_posts. Viene attivato subito prima del pulsante «Filtra» nella tabella degli articoli e delle pagine. Tutto ciò che viene emesso dentro questo hook diventa parte della riga dei filtri, esattamente come i menu a tendina di sistema per data e categoria.
La funzione wp_dropdown_users() è l'API nativa di WordPress per generare un select HTML con gli utenti. Accetta un array di argomenti: lista utenti, valore predefinito, classe CSS, e restituisce un <select> già pronto. Nessun markup manuale né query dirette al database.
Combinare questi due strumenti ti dà un'interfaccia nativa indistinguibile dai filtri integrati di WordPress.
Codice: aggiungere il menu a tendina degli autori
Inserisci lo snippet nel file functions.php del tema attivo oppure tramite un plugin per snippet di codice (ad esempio, Code Snippets). Il codice registra un hook sull'evento admin_init ed emette il select degli autori nelle schermate di articoli e pagine.
1 add_action('admin_init', 'tsd_author_dropdown_init'); 2 function tsd_author_dropdown_init() { 3 add_action('restrict_manage_posts', 'tsd_author_dropdown'); 4 } 5 function tsd_author_dropdown() { 6 if ($GLOBALS['pagenow'] !== 'edit.php') { 7 return; 8 } 9 $screen = get_current_screen(); 10 if (empty($screen) 11 || ($screen->id !== 'edit-page' && $screen->id !== 'edit-post') 12 ) { 13 return; 14 } 15 wp_dropdown_users(array( 16 'show_option_all' => 'All Authors', 17 'selected' => get_query_var('author', 0), 18 'name' => 'author' 19 )); 20 }
Cosa fa ogni parte:
admin_init attiva la registrazione solo nel pannello di amministrazione. Il frontend non viene toccato, nessun carico extra.
restrict_manage_posts emette il select nella riga dei filtri, esattamente dove si trovano i filtri di data e categoria. Il menu a tendina appare sia nella schermata degli articoli sia in quella delle pagine.
$GLOBALS['pagenow'] verifica che ci troviamo nella pagina elenco articoli (edit.php). Se l'utente va nelle impostazioni o modifica un articolo specifico, il codice esce silenziosamente.
get_current_screen() precisa il tipo di contenuto. Lo snippet funziona solo per post e page standard, saltando i custom post type (cpt). È una limitazione voluta: la maggior parte dei CPT di plugin di terze parti non usa gli autori per differenziare i contenuti.
wp_dropdown_users() genera il select HTML. L'argomento 'show_option_all' imposta il testo per l'opzione «mostra tutti gli autori», 'selected' tramite get_query_var('author') ricorda l'utente selezionato dopo il filtraggio, e 'name' => 'author' fa sì che WordPress riconosca il parametro come filtro autore e lo elabori con una query standard.

Dopo aver inserito il codice, il menu a tendina appare nelle schermate «Tutti gli articoli» e «Tutte le pagine» accanto ai filtri nativi. Il pulsante «Filtra» funziona come al solito. Puoi filtrare simultaneamente per autore, data e categoria, e WordPress incrocerà correttamente le condizioni.
Regolazione fine: cosa puoi modificare
Lo snippet è volutamente minimale, ma wp_dropdown_users() supporta decine di parametri. Puoi adattare quasi tutto al tuo scenario.
Cambiare il testo «Tutti gli autori». Sostituisci 'show_option_all' con la tua variante, ad esempio, 'Все авторы' o 'Любой автор'.
Escludere utenti specifici. Il parametro 'exclude' accetta un array di ID. Utile se tra gli utenti ci sono account di sistema che non devono apparire nella lista:
1 'exclude' => array(1, 15, 23),
Mostrare solo determinati ruoli. Il parametro 'role__in' filtra gli utenti per ruolo. Ad esempio, solo author ed editor:
1 'role__in' => array('author', 'editor'),
Ordinamento non alfabetico. Per impostazione predefinita, 'orderby' => 'display_name'. Puoi sostituirlo con 'ID', 'user_login' o 'post_count'. L'ultima opzione mostrerà in cima gli autori più attivi.
Aggiungere ad altri tipi di contenuto. Rimuovi il controllo $screen->id e il menu a tendina apparirà in tutte le schermate edit.php, inclusi i custom post type. Oppure aggiungi CPT specifici alla condizione:
1 $allowed = array('edit-post', 'edit-page', 'edit-product'); 2 if (!in_array($screen->id, $allowed, true)) { 3 return; 4 }
⁉️🤔 Domande frequenti
Lo snippet funziona con Gutenberg e Classic Editor contemporaneamente?
Sì. Il codice non tocca l'editor, modifica solo gli elenchi di amministrazione, che non dipendono dall'editor scelto. Lo snippet funziona in modo identico su Gutenberg, Classic Editor e qualsiasi page builder. Testato su WordPress 6.4-6.7 con Gutenberg attivo e senza. L'hook
restrict_manage_postsesiste dalla versione 2.1 e non è cambiato in termini di compatibilità. Il codice funzionerà su qualsiasi versione moderna di WordPress.
Devo svuotare la cache dopo aver inserito il codice?
No. Gli hook di WordPress vengono registrati al volo a ogni richiesta al pannello di amministrazione. Basta aggiornare la pagina elenco articoli. Se usi caching lato server (Redis, Varnish), questo non influisce sul pannello di amministrazione, che è escluso dalla cache per impostazione predefinita.
Posso aggiungere il menu a tendina degli autori senza accesso a functions.php?
Sì, tramite un plugin per snippet di codice. Vanno bene i gratuiti Code Snippets, WPCode o FluentSnippets. Inserisci il codice come snippet PHP con avvio automatico e funzionerà come in
functions.php. Il vantaggio di un gestore di snippet è che un errore di codice non manderà in crash il sito. Il plugin intercetterà l'errore fatale e disabiliterà lo snippet.
Perché il menu a tendina non appare nella schermata di un custom post type?
Lo snippet è deliberatamente limitato alle schermate
edit-posteedit-page. Per aggiungere un CPT, amplia la condizione nel controllo$screen->id(vedi la sezione «Regolazione fine»). Nota: per i CPT registrati senza supporto autore ('supports' => array('author')), il filtraggio per autore non funzionerà anche con il menu a tendina presente.
Lo snippet entra in conflitto con plugin come Admin Columns o Adminimize?
No. Questi plugin lavorano su altri hook e modificano le colonne della tabella, non la riga dei filtri.
restrict_manage_postsaggiunge il select prima del pulsante «Filtra», in una zona che i plugin per le colonne non toccano. In tre anni di utilizzo su siti multi-autore, non è stato registrato alcun conflitto.
Vale la pena aggiungere il menu a tendina degli autori al tuo sito
Se sul sito pubblicano più di due persone, decisamente sì. Il filtro «Mine» mostra gli articoli dell'utente corrente ma non permette di passare agli articoli di un collega. Il menu a tendina degli autori colma questa lacuna senza plugin e senza carico sul database. wp_dropdown_users() fa una sola query tramite get_users(), che WordPress mette in cache.
Per un blog individuale, il filtro non ha senso. Tanto sei l'unico autore. Ma appena compare una seconda persona, il tempo risparmiato grazie al filtraggio immediato ripaga i tre minuti spesi per inserire il codice.
Copia lo snippet in functions.php o tramite Code Snippets, aggiorna la pagina elenco articoli e verifica il filtraggio per autore insieme al filtro per data. Se devi adattarlo alla tua struttura di ruoli e tipi di contenuto, i parametri role__in, exclude e orderby danno il pieno controllo sul contenuto della lista senza plugin aggiuntivi.



