WEB系キャンパス

WordPressのthe_categoryでカテゴリごとにスラッグ名をclassに給与する

例えば、TOPページの新着記事一覧やアーカイブページなど記事の一覧部分に該当するカテゴリを表示させたい場合のメモ。

WordPressのループ内でカテゴリリストを出す場合は下記のコードで十分

<?php the_category(); ?>

上記コードで<ul>と<li>がセットで出力される。
【出力例】

<ul class="post-categories">
  <li><a href="×××××" rel="category tag">カテゴリA</a></li>
  <li><a href="×××××" rel="category tag">カテゴリB</a></li>
</ul> 

<ul>と<li>の中身のclass名とかをいじりたい場合

よくあるやり方だったら、カテゴリごとに帯の色を変えたい場合とか

「function.php」に以下のコードを追加する

//category-label
function categories_label() {
    $cats = get_the_category();
    foreach($cats as $cat){
        echo '<li><a href="'.get_category_link($cat->term_id).'" ';
        echo 'class="'.esc_attr($cat->slug).'">';
        echo esc_html($cat->name);
        echo '</a></li>';
    }
}

そしてカテゴリのリストを表示させたい場所に以下のコードを追加

<ul class="category_list">
  <?php categories_label() ?>
</ul>

これで各カテゴリリストにはスラッグ名がclassに追加されるので、個別にCSSで色をつけていけばOK。
【出力例】

<ul class="category_list">
  <li><a href="×××××" class="slug_A">カテゴリA</a></li>
  <li><a href="×××××" class="slug_B">カテゴリB</a></li>
</ul>

【CSSで色わけ】

.slug_A {
  background-color: #f00;
}
.slug_B {
  background-color: #ccc;
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です