ウェブマスターがウェブのことを書いたら

ウェブマスターとして働いている管理人がウェブで躓いたこと、ググったことを備忘録として書いています。主に技術的なこと、WEBサイト設計のこと

WPでカテゴリーアイコンにclassを付与して色変更、画像変更する方法

   

 - WordPress

WordPressの一覧ページ、アーカイブやトップページなどで、記事のカテゴリー名を表示しているアイコンをカテゴリーごとに色を変えたり、画像を変えたりする方法です。カテゴリーID、またはカテゴリースラッグを取得して、カテゴリーのアイコンにCSSクラスを付与してデザイン上の見栄えを変えます。

元となるテンプレートの記述内容

まず例で新着記事5件を表示させる一覧のテンプレートをもとに説明します。

例:新着記事5件の表示するテンプレート内容
<?php 
query_posts('showposts=5');
if (have_posts()) : 
while (have_posts()) : 
the_post();
?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a><span class="post-cat cat<?php echo $cat->cat_ID; ?>"><?php the_category(', ') ?></span><span class="post-data"><?php the_time(get_option('date_format')); //the_time('Y年m月d日') ?></span></li>
<?php
endwhile;
endif;
?>

↑上記のテンプレートにカテゴリーIDを表示させるためのコードを追記します。

挿入するコード2か所

カテゴリーIDを取得するためのコード
<?php 
 $cat = get_the_category();
 $cat = $cat[0];
?>
classにカテゴリーIDを表示させるためのコード
<?php echo $cat->cat_ID; ?>

表示させたいカテゴリーアイコン箇所のclassに挿入することで、カテゴリーIDをclass名とすることができます。

最終的なテンプレートの記述内容

コードを挿入したテンプレートの記述内容は以下になります。

カテゴリーIDを表示させる場合

class付与される箇所はカテゴリーIDの表示のみだと数字だけになってしまうので「cat-{カテゴリーID}」となるように「cat-」を追記しています。(「cat-」でなくてなんでも自由でいいです)

<?php 
 $cat = get_the_category();
 $cat = $cat[0];
?>
<?php 
query_posts('showposts=5');
if (have_posts()) : 
while (have_posts()) : 
the_post();
?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a><span class="post-cat cat-<?php echo $cat->cat_ID; ?>"><?php the_category(', ') ?></span><span class="post-data"><?php the_time(get_option( 'date_format')); //the_time('Y年m月d日') ?></span></li>
<?php
endwhile;
endif;
?>

カテゴリースラッグを表示させる場合

こちらはカテゴリーIDの表示ではなくてカテゴリースラッグで表示する場合の記述内容です。「cat_ID」の箇所が「category_nicename」になっています。こちらの場合はカテゴリースラッグが日本語になっている場合はclassとして使用できないので注意です。

<?php 
 $cat = get_the_category();
 $cat = $cat[0];
?>
<?php 
query_posts('showposts=5');
if (have_posts()) : 
while (have_posts()) : 
the_post();
?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a><span class="post-cat cat-<?php echo $cat->category_nicename; ?>"><?php the_category(', ') ?></span><span class="post-data"><?php the_time(get_option( 'date_format')); //the_time('Y年m月d日') ?></span></li>
<?php
endwhile;
endif;
?>

画像を変える場合の最終的なテンプレートの記述内容

カテゴリーアイコンを画像で表示させたい場合の画像変更のテンプレートの記述内容は以下になります。画像のファイル名にをカテゴリーIDか、カテゴリースラッグを含めるのが条件です。

緑文字の箇所が変更される画像のタグです。画像の場所は設置する場所によって変更してください。

カテゴリーIDを表示させる場合

<?php 
 $cat = get_the_category();
 $cat = $cat[0];
?>
<?php 
query_posts('showposts=5');
if (have_posts()) : 
while (have_posts()) : 
the_post();
?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a><span class="post-cat"><img src="<?php echo get_template_directory_uri(); ?>/images/icon-<?php echo $cat->cat_ID; ?>.png" alt="<?php the_category(', ') ?>" width="" height="" /></span><span class="post-data"><?php the_time(get_option( 'date_format')); //the_time('Y年m月d日') ?></span></li>
<?php
endwhile;
endif;
?>

※画像のファイル名は「icon-{カテゴリーID}.png」としています。

カテゴリースラッグを表示させる場合

<?php 
 $cat = get_the_category();
 $cat = $cat[0];
?>
<?php 
query_posts('showposts=5');
if (have_posts()) : 
while (have_posts()) : 
the_post();
?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a><span class="post-cat"><img src="<?php echo get_template_directory_uri(); ?>/images/icon-<?php echo $cat->category_nicename; ?>.png" alt="<?php the_category(', ') ?>" width="" height="" /></span><span class="post-data"><?php the_time(get_option( 'date_format')); //the_time('Y年m月d日') ?></span></li>
<?php
endwhile;
endif;
?>

※画像のファイル名は「icon-{カテゴリースラッグ}.png」としています。