Informatique

Afficher le nombre de posts par catégorie dans un menu WordPress

Cadeau aujourd’hui, une petite fonction que j’ai mis beaucoup de temps a trouver et qui permet d’afficher, comme je le dis dès le titre de ce post, le nombre d’articles contenus dans chaque catégorie sur un site WordPress.

Je ne vais pas m’étendre. J’ai fais un test sur Lpp:

Avant:

Après :

Pour cela j’ai ajouté au fichier function.php de mon thème enfant la fonction suivante:

add_filter('the_title', 'generate_category_post_count_title', 10, 2);
function generate_category_post_count_title($title, $post_ID)
{
 if( 'nav_menu_item' == get_post_type($post_ID) )
 {
 if( 'taxonomy' == get_post_meta($post_ID, '_menu_item_type', true) && 'category' == get_post_meta($post_ID, '_menu_item_object', true) )
 {
 $category = get_category( get_post_meta($post_ID, '_menu_item_object_id', true) );
 $title .= sprintf(' (%d)', $category->count);
 }
 }
 return $title;
}

Les dates de post dans wordpress

Si vous publiez plusieurs posts par jour sur votre WordPress et que certains posts de votre page “blog” (= liste de posts) ne comportent pas de date, c’est que certainement le thème que vous avez choisi utilise  la fonction WordPress the_date dans le fichier php qui correspond à cette page.

La fonction the_date, comme l’indique gentiment WordPress himself “écrase” les dates si plusieurs posts ont la même. Tant qu’il n’y a qu’un post par jour, on ne voit pas le problème (sur lpp par exemple). Mais dès le deuxième post, le premier, sur cette page n’a plus de date:

Pour pallier à cela, WordPress met à notre disposition une autre fonction “get_the_date”

“qui, contrairement à la fonction the_date retourne toujours la date”:

En clair, ce qu’il faut faire, c’est remplacer dans le .php qui fabriquent le corps de votre page blog:

<div class="post-date">
    <?php the_date(); ?>
</div><!-- post-date -->

par

<div class="post-date">
    <?php echo(get_the_date()); ?>
</div><!-- post-date -->