[WordPress] Comment afficher le nombre de billets pour chaque tag ?


L’un des widgets les plus utilisés avec WordPress est sans aucun doute le nuage de mots-clés, le tagcloud pour les intimes.
D’ailleurs, WP Colorful Tag Cloud est l’un des tout premiers plugins pour WordPress que j’ai développé.

Mais le widget par défaut souffre de quelques limitations : pas de couleurs, pas d’emphase et pas de compteur du nombre de billets par tag, …
C’est justement cette dernière limitation que je souhaite adresser dans ce billet.

L’idée est d’obtenir une liste de tags avec le nombre de billets attachés.
Pour les besoins de ce billet (et de Websourcing.fr), j’ai simplement implémenté une liste des X premiers tags, classés par nombre de billets attachés.

Voici le code à placer dans le fichier function.php.

if (! function_exists( 'websourcing_tag_list' ) ){ 
function websourcing_tag_list($number) {
echo websourcing_get_tag_list($number);
}
}

if (! function_exists( 'websourcing_get_tag_list' ) ){ 
function websourcing_get_tag_list($number=10){
	global $wpdb;
	$top_tags = get_tags("orderby=count&order=DESC&number=$number");

	$html = '';
	foreach($top_tags as $tag) {
		$tag_link = get_tag_link($tag->term_id);
		$html.= "<li><a class='tag-link-{$tag->term_id}' title='{$tag->count} articles' href='{$tag_link}'>{$tag->name}</a> ({$tag->count})</li>";
	}
	
	return $html;
}
}

 
Le résultat, avec quelques styles CSS, est le suivant :

Ici nous avons une liste, mais il serait simple d’afficher le résultat sous une autre forme.

C’est quand même dommage que Automattic n’est pas pensé à ajouter cette fonctionnalités dans wp_tag_cloud, d’autant plus que c’est simple et que les catégories en bénéficient.

L’appel à cette fonction doit se trouver à l’endroit où vous souhaitez que la liste apparaisse dans votre thème.
Pour afficher la liste, j’ai simplement collé websourcing_tag_list(32); dans le header de mon thème.

N’hésitez pas si vous avez des questions.

Références : http://codex.wordpress.org/Function_Reference/get_tags