J'utilise actuellement get_terms pour lister les termes d'une taxonomie donnée. J'aimerais ajouter une classe au terme actuellement interrogé via le modèle d'archive.
J'ai essayé d'assembler le code ci-dessous, mais cela a pour résultat bizarrement que la classe soit appliquée non seulement au terme actuel interrogé, mais à chaque terme APRÈS. J'ai essayé de comparer les slugs, les identifiants et les noms de $ term et de $ currentterm - qui produisent tous une sortie correcte.
$terms = get_terms('MYTAX');
$currentterm = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
foreach ($terms as $term) {
if($currentterm->slug == $term->slug) $class = "live";
echo '<li class="'. $class .'"><a href="http://website.com/?MYTAX='. $term->slug .'">' . $term->name . '</a></li>';
}
Essayez ceci à la place:
$terms = get_terms('MYTAX');
$currentterm = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
foreach ($terms as $term) {
$class = $currentterm->slug == $term->slug ? 'live' : '' ;
echo '<li class="'. $class .'"><a href="http://website.com/?MYTAX='. $term->slug .'">' . $term->name . '</a></li>';
}
Fondamentalement, il vous suffit de réinitialiser votre variable $class
en une chaîne vide après que votre conditionnel a renvoyé la valeur false, sinon elle restera vraie. Cela semble étrange, mais une fois que vous savez comment vous en occuper, tout va bien.