J'utilise le code suivant pour obtenir un tableau de taxonomies d'enfants et les écrire avec des liens dans une liste non ordonnée.
<?php
$termID = 10;
$taxonomyName = "products";
$termchildren = get_term_children( $termID, $taxonomyName );
echo '<ul>';
foreach ($termchildren as $child) {
$term = get_term_by( 'id', $child, $taxonomyName );
echo '<li><a href="' . get_term_link( $term->name, $taxonomyName ) . '">' . $term->name . '</a></li>';
}
echo '</ul>';
?>
Ce que j'essaie de faire est d'obtenir l'id du terme (catégorie) afin de pouvoir le remplacer sur $ termID sans avoir à coder en dur l'id du terme.
Toute aide serait aimablement appréciée!
Merci!
Voici une fonction que j'utilise pour lister les sous-termes:
/**
* Lists all subentries of a taxonomy.
*
* @return void
*/
function ttt_get_subterms( $args = array () )
{
if ( ! isset ( get_queried_object()->taxonomy ) )
{
return;
}
$options = array (
'child_of' => get_queried_object_id()
, 'echo' => 0
, 'taxonomy' => get_queried_object()->taxonomy
, 'title_li' => FALSE
, 'use_desc_for_title' => FALSE
);
$settings = array_merge( $options, $args );
$subtermlist = wp_list_categories( $settings );
// Without results WP creates a dummy item. It doesn't contain links.
! empty ( $subtermlist ) and FALSE !== strpos( $subtermlist, '<a ' )
and print "<ul class=subterms>$subtermlist</ul>";
}
Utilisez-le comme wp_list_categories()
.
Évitez get_term_by()
. C'est très cher et pas nécessaire.
Pour obtenir le terme actuel, vous pouvez utiliser get_query_var( 'term' );
et pour obtenir la taxonomie actuelle, vous pouvez utiliser get_query_var( 'taxonomy' )
afin que vous puissiez faire quelque chose comme ceci:
$term_slug = get_query_var( 'term' );
$taxonomyName = get_query_var( 'taxonomy' );
$current_term = get_term_by( 'slug', $term_slug, $taxonomyName );
$termchildren = get_term_children( $current_term->term_id, $taxonomyName );
echo '<ul>';
foreach ($termchildren as $child) {
$term = get_term_by( 'id', $child, $taxonomyName );
echo '<li><a href="' . get_term_link( $term->name, $taxonomyName ) . '">' . $term->name . '</a></li>';
}
echo '</ul>';
Ou vous pouvez utiliser: term_exists ($ term, $ taxonomy, $ parent)
$term_id = term_exists( $term_name );
Voir WordPress Codex
Vérifier si un terme donné existe et renvoyer l'ID du terme
Renvoie l'ID du terme si aucune taxonomie n'a été spécifiée et que le terme existe.
Pour obtenir l'ID terme actuel, utilisez :
$term_id = get_queried_object()->term_id;
get_query_var
ne peut pas être utilisé dans ce cas, puisque term_id
ne figure pas dans la liste list des vars disponibles publiquement.