web-dev-qa-db-fra.com

Add the class on course to term research on archives of taxonomie

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>';
}
1
rspny

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.

3
MichaelJames