wake-up-neo.net

Hinzufügen der aktuellen Klasse zum abgefragten Begriff im Taxonomiebegriffsarchiv

Ich verwende derzeit get_terms, um Begriffe einer bestimmten Taxonomie aufzulisten. Ich möchte dem Begriff, der gerade über die Archivvorlage abgefragt wird, eine Klasse hinzufügen.

Ich habe versucht, den folgenden Code zusammenzustellen, aber dies führt seltsamerweise dazu, dass die Klasse nicht nur auf den aktuellen Begriff angewendet wird, der abgefragt wird, sondern auch auf jeden Begriff NACH diesem. Ich habe versucht, die Slugs, IDs und Namen von $ term und $ currentterm zu vergleichen - alles richtig ausgegeben.

$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

Versuchen Sie dies stattdessen:

$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>'; 
}

Grundsätzlich müssen Sie Ihre $class-Variable nur auf eine leere Zeichenfolge zurücksetzen, nachdem Ihre Bedingung false zurückgegeben hat. Andernfalls bleibt sie weiterhin true. Es scheint seltsam, aber sobald Sie wissen, wie man damit umgeht, ist alles in Ordnung.

3
MichaelJames