[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.
Je pense tenter d’en faire autre chose, comme des nuages de tags par catĂ©gories.
crédits: wprecipes









Citer #1 par Aragornis le 14 octobre 2009 - 22:57
Un peu de chippotage sur le code, mais la variable count ne sert Ă rien. Il suffit de faire
$tag->tag_link = get_tag_link($tag->tag_id);
Mais sinon, c’est bien fait
Citer #2 par Lionel Roux le 15 octobre 2009 - 18:59
hĂ©hĂ© je ne corrige jamais ce genre de truc. Je me demande mĂŞme si ce n’est pas optimisĂ© Ă la volĂ©e.
Mais bon dans l’absolue tu as raison.
Citer #3 par Jean-Baptiste Jung le 20 octobre 2009 - 14:49
Tu crois pas qu’un ptit lien vers la source http://www.wprecipes.com/wordpress-trick-function-to-get-tags-related-to-category aurait Ă©tĂ© le bienvenu?
Citer #4 par Lionel Roux le 20 octobre 2009 - 16:38
Figures toi que je l’ai lu sur mon Google Reader, copiĂ© dans un bloc note comme je fais d’habitude, avec le lien feeds.google… qui ne me redirigeait plus vers le site source.
C’est pas mon genre de pas mettre les sources, au contraire, je me fais pomper assez de truc comme ça. Ya qu’Ă regarder tous mes autres billets. Je corrige ça tout de suite. Et merci pour le lien.
Citer #5 par Jean-Baptiste Jung le 20 octobre 2009 - 17:11
Y’a pas de soucis, ça nous arrive Ă tous
Bonne continuation!
Citer #6 par jean le 24 octobre 2009 - 15:55
Merci pour le code , j’avoue que cela peut ĂŞtre très pratique lorsque l’on a plus d’une centaine d’article a se taper
Sur Les tweets qui mentionnent [Wordpress] Comment récupérer les tags d’une catégorie? - Websourcing.fr -- Topsy.com le 14 octobre 2009 - 15:42
[...] Ce billet était mentionné sur Twitter par Simon Tripnaux, Lionel Roux. Lionel Roux a dit: Sur Websourcing.fr: [Wordpress] Comment récupérer les tags d’une catégorie?: S’il y a .. http://bit.ly/gqVQp [...]