[WordPress] Comment récupérer les tags d’une catégorie?


S’il y a bien une chose qui est pénible avec WordPress, c’est d’avoir à retaper systématiquement tous les tags pour des billets qui en général se ressemblent.

Même si certaines différences peuvent apparaitre, il serait utile pour notre productivité de récupérer automatiquement les tags les plus courants.

Au détour de mes flux je suis tombé sur une solution qui pourrait bien avoir de multiples applications, dont celle décrite ci-dessus.

Sans plus attendre le code:

function get_category_tags($args) {
	global $wpdb;
	$tags = $wpdb->get_results
	("
		SELECT DISTINCT terms2.term_id as tag_id, terms2.name as tag_name, null as tag_link
		FROM
			wp_posts as p1
			LEFT JOIN wp_term_relationships as r1 ON p1.ID = r1.object_ID
			LEFT JOIN wp_term_taxonomy as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id
			LEFT JOIN wp_terms as terms1 ON t1.term_id = terms1.term_id,

			wp_posts as p2
			LEFT JOIN wp_term_relationships as r2 ON p2.ID = r2.object_ID
			LEFT JOIN wp_term_taxonomy as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id
			LEFT JOIN wp_terms as terms2 ON t2.term_id = terms2.term_id
		WHERE
			t1.taxonomy = 'category' AND p1.post_status = 'publish' AND terms1.term_id IN (".$args['categories'].") AND
			t2.taxonomy = 'post_tag' AND p2.post_status = 'publish'
			AND p1.ID = p2.ID
		ORDER by tag_name
	");
	$count = 0;
	foreach ($tags as $tag) {
		$tags[$count]->tag_link = get_tag_link($tag->tag_id);
		$count++;
	}
	return $tags;
}

Globalement, la fonction va retourner un tableau contenant tous les tags utilisés pour les catégories passées en paramètre.

Pour l’utiliser il vous suffit de coller ce code dans le fichier function.php et d’invoquer la fonction get_category_tags().

$args = array('categories' => '12,13,14'); // les chiffres correspondent aux IDs de vos catégories
$tags = get_category_tags($args);

Pour récupérer les identifiants des catégories, il vous suffit d’aller dans le menu Articles -> Catégories et de passer votre souris sur le titre de la catégorie. Il vous suffit alors de trouver le chiffre suivant le paramètre cat_ID dans l’url.

wordpress-categorie-id-dans-url

Je pense tenter d’en faire autre chose, comme des nuages de tags par catégories.

crédits: wprecipes