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.
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'"
);
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;
?>