web-dev-qa-db-ja.com

分類用語アーカイブの照会用語に現在のクラスを追加

私は現在get_termsを使用して特定の分類法の用語を一覧表示しています。アーカイブテンプレートを介して現在照会されている用語にクラスを追加したいと思います。

以下のコードをまとめてみましたが、これは奇妙なことに現在の用語だけでなくそれ以降のすべての用語にもクラスが適用されることになります。スラッグ、ID、および$ termと$ currenttermの名前を比較してみました。これらはすべて正しく出力されます。

$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

代わりにこれを試してください:

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

基本的には、あなたの条件が偽を返した後、あなたは$class変数を空の文字列にリセットする必要があるだけです。そうでなければ、それは真のままであり続けるでしょう。それは奇妙に思えますが、あなたがそれをどのように処理するかを知ったら、それはすべて良いです。

3
MichaelJames