
⌨️ Comment ajouter un menu déroulant d'auteur sur l'écran Tous les articles dans WordPress
Le filtre par défaut «Les miens» sur l’écran «Tous les articles» de WordPress affiche uniquement les articles de l’utilisateur connecté. Cela fonctionne tant que vous êtes le seul auteur. Mais lorsque trois rédacteurs, cinq contributeurs et quelques experts invités travaillent sur le site, retrouver qui a écrit quoi devient un défilement interminable dans un tableau.
L’interface native de WordPress ne propose pas de liste déroulante des auteurs à côté des filtres de date et de catégorie. Les développeurs ont volontairement limité cet écran, en partant du principe que le filtre «Les miens» suffit aux administrateurs. En pratique, c’est dramatiquement insuffisant.
Vous pouvez ajouter une liste déroulante des auteurs sans extension, à l’aide d’un simple extrait PHP. Le code s’accroche aux hooks natifs de l’administration et n’entre pas en conflit avec les autres filtres. La liste déroulante des auteurs fonctionne conjointement avec le bouton «Filtrer» natif.
💡 Aperçu rapide:
- Nous utilisons le hook
admin_initpour que le code ne s’exécute que dans le panneau d’administration et n’affecte pas le frontend - Nous affichons
wp_dropdown_users()viarestrict_manage_postspour que la liste déroulante apparaisse dans la ligne de filtres, à côté de la date et de la catégorie - Nous limitons la portée via
get_current_screen()aux seuls articles et pages, sans toucher aux types de contenu personnalisés - L’auteur sélectionné est mémorisé via
get_query_var('author')et fonctionne avec les autres filtres
Comment cela fonctionne sous le capot
WordPress affiche les filtres sur les écrans de liste via le hook restrict_manage_posts. Il se déclenche juste avant le bouton «Filtrer» dans le tableau des articles et des pages. Tout ce qui est émis à l’intérieur de ce hook devient partie intégrante de la ligne de filtres, au même titre que les listes déroulantes système de date et de catégorie.
La fonction wp_dropdown_users() est l’API native de WordPress pour générer un élément <select> HTML contenant des utilisateurs. Elle accepte un tableau d’arguments: liste d’utilisateurs, valeur par défaut, classe CSS, et renvoie un <select> prêt à l’emploi. Pas de balisage manuel ni de requêtes directes en base de données.
En combinant ces deux outils, vous obtenez une interface native impossible à distinguer des filtres WordPress intégrés.
Code: ajouter la liste déroulante des auteurs
Insérez l’extrait dans le fichier functions.php du thème actif ou via une extension d’extraits de code (par exemple, Code Snippets). Le code enregistre un hook sur l’événement admin_init et affiche la liste de sélection des auteurs sur les écrans des articles et des pages.
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 }
Ce que fait chaque partie:
admin_init déclenche l’enregistrement uniquement dans le panneau d’administration. Le frontend n’est pas affecté, aucune charge supplémentaire.
restrict_manage_posts affiche la liste de sélection dans la ligne de filtres, exactement là où se trouvent les filtres de date et de catégorie. La liste déroulante apparaît à la fois sur l’écran des articles et sur celui des pages.
$GLOBALS['pagenow'] vérifie que nous sommes bien sur la page de liste des articles (edit.php). Si l’utilisateur va dans les réglages ou modifie un article spécifique, le code s’arrête silencieusement.
get_current_screen() précise le type de contenu. L’extrait ne fonctionne que pour les types post et page standards, en ignorant les types de contenu personnalisés (cpt). C’est une limitation délibérée: la plupart des CPT issus d’extensions tierces n’utilisent pas les auteurs pour différencier le contenu.
wp_dropdown_users() génère le <select> HTML. L’argument 'show_option_all' définit le texte de l’option «voir tous les auteurs», 'selected' via get_query_var('author') mémorise l’utilisateur sélectionné après filtrage, et 'name' => 'author' garantit que WordPress reconnaît le paramètre comme un filtre par auteur et le traite avec une requête standard.

Après avoir inséré le code, la liste déroulante apparaît sur les écrans «Tous les articles» et «Toutes les pages» à côté des filtres natifs. Le bouton «Filtrer» fonctionne comme d’habitude. Vous pouvez filtrer simultanément par auteur, date et catégorie, et WordPress croisera correctement les conditions.
Réglages fins: ce que vous pouvez modifier
L’extrait est volontairement minimal, mais wp_dropdown_users() prend en charge des dizaines de paramètres. Vous pouvez adapter presque tout à votre scénario.
Modifier le texte «Tous les auteurs». Remplacez 'show_option_all' par votre propre variante, par exemple 'Все авторы' ou 'Любой автор'.
Exclure des utilisateurs spécifiques. Le paramètre 'exclude' accepte un tableau d’identifiants. Utile s’il y a des comptes système parmi les utilisateurs qui ne devraient pas apparaître dans la liste:
1 'exclude' => array(1, 15, 23),
Afficher uniquement certains rôles. Le paramètre 'role__in' filtre les utilisateurs par rôles. Par exemple, uniquement les auteurs et les rédacteurs:
1 'role__in' => array('author', 'editor'),
Tri non alphabétique. Par défaut, 'orderby' => 'display_name'. Vous pouvez le remplacer par 'ID', 'user_login' ou 'post_count'. Cette dernière option placera les auteurs les plus actifs en tête de liste.
Ajouter à d’autres types de contenu. Supprimez la vérification $screen->id, et la liste déroulante apparaîtra sur tous les écrans edit.php, y compris les types de contenu personnalisés. Ou ajoutez des CPT spécifiques à la condition:
1 $allowed = array('edit-post', 'edit-page', 'edit-product'); 2 if (!in_array($screen->id, $allowed, true)) { 3 return; 4 }
⁉️🤔 Foire aux questions
L’extrait fonctionne-t-il avec Gutenberg et l’Éditeur classique** simultanément?**
Oui. Le code ne touche pas à l’éditeur, il modifie uniquement les listes d’administration, qui ne dépendent pas de l’éditeur choisi. L’extrait fonctionne de manière identique sur Gutenberg, l’Éditeur classique et n’importe quel constructeur de pages. Testé sur WordPress 6.4-6.7 avec Gutenberg actif et sans. Le hook
restrict_manage_postsexiste depuis la version 2.1 et n’a pas changé en termes de compatibilité. Le code fonctionnera sur toute version moderne de WordPress.
Dois-je vider le cache après avoir inséré le code?
Non. Les hooks WordPress sont enregistrés à la volée à chaque requête vers le panneau d’administration. Il suffit de rafraîchir la page de liste des articles. Si vous utilisez une mise en cache côté serveur (Redis, Varnish), cela n’affecte pas le panneau d’administration, qui est exclu de la mise en cache par défaut.
Puis-je ajouter la liste déroulante des auteurs sans accès au fichier functions.php?
Oui, via une extension d’extraits de code. Les extensions gratuites Code Snippets, WPCode ou FluentSnippets fonctionneront. Insérez le code en tant qu’extrait PHP avec démarrage automatique, et il fonctionnera de la même manière que dans
functions.php. L’avantage d’un gestionnaire d’extraits est qu’une erreur de code ne fera pas planter le site. L’extension interceptera l’erreur fatale et désactivera l’extrait.
Pourquoi la liste déroulante n’apparaît-elle pas sur l’écran d’un type de contenu personnalisé?
L’extrait est délibérément limité aux écrans
edit-postetedit-page. Pour ajouter un CPT, élargissez la condition dans la vérification$screen->id(voir la section «Réglages fins»). Remarque: pour les CPT enregistrés sans la prise en charge des auteurs ('supports' => array('author')), le filtrage par auteur ne fonctionnera pas même avec la liste déroulante présente.
L’extrait entre-t-il en conflit avec des extensions comme Admin Columns ou Adminimize?
Non. Ces extensions fonctionnent sur d’autres hooks et modifient les colonnes du tableau, pas la ligne de filtres.
restrict_manage_postsajoute la liste de sélection avant le bouton «Filtrer», dans une zone que les extensions de colonnes ne touchent pas. En trois ans d’utilisation sur des sites multi-auteurs, aucun conflit n’a été enregistré.
Vaut-il la peine d’ajouter la liste déroulante des auteurs à votre site
Si plus de deux personnes publient sur le site, assurément oui. Le filtre «Les miens» montre les articles de l’utilisateur connecté mais ne vous permet pas de basculer vers les articles d’un collègue. La liste déroulante des auteurs comble cette lacune sans extension et sans charge sur la base de données. wp_dropdown_users() effectue une seule requête via get_users(), que WordPress met en cache.
Pour un blog solo, le filtre n’a aucun sens. Vous êtes de toute façon le seul auteur. Mais dès qu’une deuxième personne apparaît, le temps gagné grâce au filtrage instantané rentabilise les trois minutes passées à insérer le code.
Copiez l’extrait dans functions.php ou via Code Snippets, rafraîchissez la page de liste des articles et testez le filtrage par auteur en conjonction avec le filtre de date. Si vous avez besoin de l’adapter à votre structure de rôles et à vos types de contenu, les paramètres role__in, exclude et orderby vous donnent un contrôle total sur le contenu de la liste sans extensions supplémentaires.



