web-dev-qa-db-fra.com

Comment puis-je obtenir l'ID de la catégorie par nom de catégorie?

J'ai quelques catégories du même nom [certaines d'entre elles sont des sous-catégories]. Et je veux obtenir un tableau d'identifiants pour certains noms de catégories. J'ai essayé ceci:

 $term = get_term_by('name', $cat_name, 'category');

mais il semble que get_term_by() ne renvoie que le premier terme correspondant à la requête.

3
s976

La seule alternative que je connaisse (utilisant les fonctions principales) est:

// Get terms whose name begins with "my_name"
get_terms( 'category', array( 'name__like' => 'my_name' ) );

// Get terms whose name contains "my_name"
get_terms( 'category', array( 'search' => 'my_name' ) );

Si vous avez besoin d'une correspondance exacte, vous devrez exécuter une requête personnalisée.

$wpdb->get_results( "SELECT t.*, tt.* FROM $wpdb->terms AS t
    INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id
    WHERE tt.taxonomy = 'category' AND t.name = 'my_name'"
);
5
TheDeadMedic

get_cat_ID( $cat_name ) peut faire l'affaire! Exemple:

<?php
     $category_id = get_cat_ID('Category Name');
     $q = 'cat=' . $category_id;
     query_posts($q);
     if (have_posts()) : while (have_posts()) : the_post();

     the_content();

     endwhile; endif;
?>

Plus de détails!

3
enam