Obtenez l'ID actuel terme
-
16-10-2019 - |
Question
Im en utilisant le code suivant pour obtenir un tableau de taxonomies enfants et de 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 je suis en train d'atteindre est d'obtenir l'ID terme réel (catégorie) pour que je puisse le remplacer sur $ Termid et ne pas coder en dur l'identifiant du terme.
Toute aide serait appréciée de bien vouloir!
Merci!
La solution
Voici une fonction que j'utilise pour la liste des 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 comme wp_list_categories()
.
Évitez get_term_by()
. Il est très coûteux et pas nécessaire.
Autres conseils
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 ($ terme, $ taxinomie, $ parent)
$term_id = term_exists( $term_name );
Vérifier si un terme donné existe et renvoie l'ID terme
Retourne le terme ID si aucune taxonomie a été spécifiée et le terme existe.
Pour obtenir l'ID de terme, utilisation :
$term_id = get_queried_object()->term_id;
get_query_var
ne peut pas être utilisé dans Thise cas, puisque term_id
est pas dans la liste des vars accessibles au public.