WordPress : récupérez l’ID d’une catégorie

ID de catégorie WordPressEt zou, un petit bout de code bien utile pour WordPress, pour retrouver l’ID d’une catégorie.

C’est tout bête, mais j’utilise ce code à tout bout de champs dans mon thème et certains plugins que je développe.

Retrouver l’ID d’une catégorie WordPress

Le code renvoie l’ID d’une catégorie WordPress à partir de son nom, sans pour autant le connaître à l’avance. Très utile pour les pages de tags, de catégorie et d’index.

Le code donne l’ID d’une seule catégorie par article. Si vous avez assigné un article à plusieurs catégories, le code ci-dessous ne vous en donnera qu’un. De toute façon, je vous déconseille d’avoir un article WordPress dans plusieurs catégories afin d’éviter le duplicate content (vive le référencement naturel !).

$category = get_the_category();
$mycat = $category[0]->cat_name;
$mycat2 = get_cat_id($mycat);

Utilisez ensuite la variable $mycat2 comme bon vous semble. Attention, le code est a utiliser dans le loop de WordPress.

L’utilisation de l’ID de catégorie dans WordPress

Ce code peut ensuite être réutilisé dans plusieurs cas, dont voici certains que j’utilise dans le thème de SeoMix :

Afficher l’ID en dur

<?php echo get_cat_name($mycat2);?>

Le lien de la catégorie

<?php get_category_link($mycat2);?>

Le flux RSS de la catégorie

<?php get_category_feed_link('$mycat2', ''); ?>

Sur ce, bon développement à tous sur notre bon vieux WordPress.

Daniel Roch

Fondateur, conférencier, auteur, consultant et expert SEO WordPress

12 Commentaires

Pandoon Le 10 août 2010 à 13h13
Pour retrouver l'ID d'une catégorie WordPress +facilement:

Panneau admin => Articles => Catégorie => mettez la souris sur une catégorie (vous pouvez aussi cliquer) et l'ID apparait dans le lien tout à la fin! ;-)
Daniel Roch Le 10 août 2010 à 13h58
Oui, c'est la méthode la plus facile pour connaître l'ID d'une catégorie de Wordpress, mais c'est inutilisable pour modifier ou développer un thème ou un plugin pour WP. ;)
Julien - Référenceur SEO Le 11 août 2010 à 11h05
Nikel pour mon petit plugin que je dois réaliser.
J'ai fini de faire le tour de ce blog, bonne chance pour ton blog, pour ma part je reviendrai.
didier Le 30 mars 2011 à 17h59
Merci Daniel, c'est une très bonne astuce...
il me semble qu'il est aussi possible de faire ceci :

$category = get_the_category();
$mycat = $category[0]->cat_ID;
Hernan Le 01 juillet 2011 à 10h24
On doit pouvoir aussi faire ça je pense, corrigez-moi si je me trompe :
[pastacode lang="bash" provider="manual"]foreach((get_the_category()) as $category) {
echo $category->cat_ID;
}[/pastacode]
Daniel Roch Le 01 juillet 2011 à 11h34
Tu as tout à fait raison. Ta solution fonctionne parfaitement pour récupérer les ID d'un article WordPress. ;)
Jonathan Le 27 juillet 2011 à 17h12
Ca fonctionne nickel si on est sur un single.php par contre pour un category.php, je n'arrive pas à récupérer autre chose que le nom ou la description... Une idée pour récupérer l'ID et le nicename?

L'objectif c'est de pouvoir afficher qqch du style...

[pastacode lang="bash" provider="manual"]img src="img/categories/' . $cat_ID . '-' . $category-nicename .'.png" alt="Nom de la catégorie"[/pastacode]

Merci d'avance pour votre aide !
    Daniel Roch Le 28 juillet 2011 à 9h26
    Il existe une solution dans ce cas, fournie par WpRecipes :

    [pastacode lang="bash" provider="manual"]function get_category_id($cat_name){
    $term = get_term_by('name', $cat_name, 'category');
    return $term->term_id;}
    $category_ID = get_category_id('Nom de la catégorie');[/pastacode]
Jonathan Le 28 juillet 2011 à 10h34
Merci... Du coup, j'ai adapté ce code, voilà ce que ça donne pour ceux que ça intéresse :

Dans functions.php
[pastacode lang="bash" provider="manual"]/* Récupérer ID */
function get_category_id($cat_name){
$term = get_term_by('name', $cat_name, 'category');
return $term->term_id;}[/pastacode]

[pastacode lang="bash" provider="manual"]/* Récupérer Nicename */
function get_category_nicename($cat_name){
$term = get_term_by('name', $cat_name, 'category');
return $term->slug;}[/pastacode]
Dans category.php
[pastacode lang="bash" provider="manual"]<img class="cat" src="/img/categories/-.png" alt="" />[/pastacode]
Ant0 Le 20 août 2011 à 13h07
Bonjour,

Merci pour votre article mais je ne parviens pas à récupérer l'id de la sous-catégorie courante

Donc, j'utilise cette fonction

et j'aimerai bien récupérer l'id de la catégorie courante et l'afficher à la place de 7.

Auriez vous une solution ?

Merci
Thomas Barbéra Le 04 mai 2012 à 17h42
Merci pour l'astuce, ça m'a été bien utile pour pouvoir afficher un contenu personnalisé dans une certaine catégorie ! Pour info, j'ai utilisé la technique à Didier qui marche nikel !
Thomas Barbéra Le 11 mai 2012 à 19h37
Finalement, ça n'allait pas car ça me retournait l'ID de la 1ère catégorie du 1er post. Mon post étant dans plusieurs catégorie, ça ne me retournait pas dans tous les cas la catégorie active.

J'ai trouvé cette astuce là qui fonctionne nikel en revanche :
[pastacode lang="bash" provider="manual"]/* Récupère l'ID de la catégorie courante */
$mycat = get_query_var('cat');[/pastacode]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *