Tout savoir sur WordPress
Tutoriel WordPress

Ajouter un filtre par catégorie dans l’administration

Afin d’améliorer la gestion des articles dans l’administration de WordPress, découvrez comment ajouter un tri par catégorie/taxonomy.

Dans une précédente astuce, on avait remarqué les lacunes de WordPress par rapport au tri des articles dans l’administration. Pour ceux qui possèdent un blog avec plusieurs contributeurs, on avait vu la méthode à suivre pour ajouter un filtre par auteur.

Aujourd’hui, je vous propose d’ajouter un filtre par catégorie/taxonomy. Quand un site possède énormément d’articles, il est pratique de pouvoir les trier par catégorie pour vos Custom Post Types.

Pour cela, il suffit de copier le code suivant dans le fichier functions.php de votre thème :

[pastacode lang=”php” message=”” highlight=”” provider=”manual”]


add_action( 'restrict_manage_posts', 'gkp_restrict_manage_posts' );
function gkp_restrict_manage_posts() 
{
    global $typenow;
   
    if ( $typenow == 'SLUG_YOUR_CPT' ) 
    {

        $taxonomy = 'SLUG_YOUR_TAXONOMY'; 
        wp_dropdown_categories(array(
            'show_option_all' =>  'Voir toutes les catégories',
            'taxonomy'        =>  $taxonomy,
            'name'            =>  $taxonomy,
            'orderby'         =>  'name',
            'selected'        =>  $_GET[$taxonomy],
            'hierarchical'    =>  true,
            'show_count'      =>  true,
            'hide_empty'      =>  true
        ));
    }
}

add_action( 'request', 'gkp_admin_request' );
function gkp_admin_request( $request ) 
{
	
    if ( is_admin() && isset( $request['post_type'] ) && $request['post_type'] == 'SLUG_YOUR_CPT' )
    {
	$taxonomy = 'SLUG_YOUR_TAXONOMY';
        $request[$taxonomy] = get_term_by( 'id', $request[$taxonomy], $taxonomy)->slug;
    }
    return $request;
}

[/pastacode]

Voici un aperçu du résultat :

Ajout d'un filtre par catégorie
Ajout d’un filtre par catégorie

À savoir qu’il est possible de supprimer le nombre d’articles à côté des libellés de vos catégories. Pour cela, vous devez indiqué la valeur false à la clé show_count.

PS : N’oubliez pas de remplacer SLUG_YOUR_CPT et SLUG_YOUR_TAXONOMY par vos propres valeurs.

Cet article a été mis à jour il y a 4013 jours - Il n'est peut être plus à jour !

Article écrit par Jonathan B.

Jonathan est le co-fondateur de WP Media, startup connue pour être l’auteur de WP Rocket et Imagify. Il est aussi co-organisateur du WordCamp Lyon et Paris.

8 Commentaires

  1. Je ne comprends pas trop ? Il n’y a pas déjà un filtre de ce type dans la liste de billets ?

    Et d’ailleurs, est-ce que quelqu’un peut m’expliquer pourquoi je dois cliquer deux fois sur l’icône de tri dans la colonne date pour afficher les billets du plus vieux au plus récent ?

  2. @Li-An: Pour les articles, c’est disponible par défaut. Par contre, ce n’est pas disponible avec un Custom Post Type et une Taxonomy perso.

  3. Bonjour,

    Je viens d’ajouter le filtre “taxonomies” que tu as proposé dans mon Admin.
    Ça marche très bien, merci!

    Je cherche maintenant à afficher ces mêmes taxonomies dans les “Options d’écran” à cocher afin de les voir aussi apparaître dans ma liste d’articles au même titre que la date.

    Aurais-tu une nouvelle astuce pour y parvenir?

    Merci et à bientôt.

  4. @ Ceciko: Les taxonomies sont déjà ajoutées automatiquement dans les options de l’écran :o)

  5. Merci pour cet article très intéressant et très riche qui prouve que WordPress a vraiment d’infinies possibilités.Je trouve que ça permet vraiment de personnaliser l’administration d’un site.

  6. hello
    Merci pour le tuto!
    J’ai juste un bug ( pour un custom post type), lorsque je clic sur le menu déroulant pour voir une de mes catégories ( qui sont toutes affichées avec le nombre) j’ai une page avec aucun résultat !
    D’où cela peux t’il venir ,
    Merci pour votre réponse!