Ce « code snippet » ie. bout de code, permet d’ajouter des filtres de taxonomies sur les custom post types dans la zone d’administration.
Placer ce bout de code à la fin du fichier functions.php de votre thème actif (idéalement un thème enfant), ou dans une extension pour l’ajout de bouts de code comme Code Snippets ou WP Code.
add_action( 'restrict_manage_posts', 'filter_backend_by_taxonomies' , 99, 2);
/* Filtrer CPT via Custom Taxonomy */
function filter_backend_by_taxonomies( $post_type, $which ) {
// Remplacer 'mon_cpt' par le slug de votre cpt
if ( 'mon_cpt' !== $post_type )
return;
// Une liste des taxonomies à filtrer (remplacer par le slug de vos taxonomies)
$taxonomies = array( 'taxo1', 'taxo2', 'taxo3' );
foreach ( $taxonomies as $taxonomy_slug ) {
// Récupérer le contenu des taxonomies
$taxonomy_obj = get_taxonomy( $taxonomy_slug );
$taxonomy_name = $taxonomy_obj->labels->name;
// Récupérer les termes des taxonomies
$terms = get_terms( $taxonomy_slug );
// HTML de l'apparence des filtres
echo "<select name='{$taxonomy_slug}' id='{$taxonomy_slug}' class='postform'>";
echo '<option value="">' . sprintf( esc_html__( '%s (tout)', 'text_domain' ), $taxonomy_name ) . '</option>';
foreach ( $terms as $term ) {
printf(
'<option value="%1$s" %2$s>%3$s (%4$s)</option>',
$term->slug,
( ( isset( $_GET[$taxonomy_slug] ) && ( $_GET[$taxonomy_slug] == $term->slug ) ) ? ' selected="selected"' : '' ),
$term->name,
$term->count
);
}
echo '</select>';
}
}