wordpress タグ一覧にカテゴリ情報表示
通常のブログを運営している際や、welcartでECサイトを構築している場合など
投稿の分類の仕方として「カテゴリ」「タグ」それぞれ利用しているケールも多いかと思います。
私はwelcartで各商品の属性を下記の形で運用しています。
メーカー名:タグ 商品種別:カテゴリ
この場合、メーカー一覧(タグ一覧)の画面を見たときに、これがどの商品種別かがわからなくなってしまいます。
そんな時にタグ一覧にもカテゴリ名を表示させる。本日はそんな話です。
完成イメージ
下記のように、抜粋項目の下にカテゴリ名を表示します。
投稿を下記のように分類しています。
タグ:日本産
カテゴリ:野菜、フルーツ、会員用
before

after

日本産というタグで一覧を見ていると、その投稿がどのカテゴリに属しているかわからないので
各投稿毎に「カテゴリ名」を表示します。
カスタマイズ箇所
タグの一覧なので、「archive.php」をカスタマイズします。
サンプルはwelacartのテーマを利用しています。
ページ修正箇所
<?php if (have_posts()) : ?>
<div class="post-li">
<?php while (have_posts()) : the_post(); ?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<p><time datetime="<?php the_time('c'); ?>"><?php the_time(__('Y/m/d')) ?></time></p>
<div class="post-title"><a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php printf( esc_attr__( 'Permalink to %s', 'welcart_basic' ), the_title_attribute( 'echo=0' ) ); ?>"><?php the_title(); ?></a></div>
<?php the_excerpt() ?>
</article>
<?php endwhile; ?>
</div>
<?php endif; ?>
カスタマイズは抜粋を示す「the_excerpt」の下に追加します。
<?php if (have_posts()) : ?>
<div class="post-li">
<?php while (have_posts()) : the_post(); ?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<p><time datetime="<?php the_time('c'); ?>"><?php the_time(__('Y/m/d')) ?></time></p>
<div class="post-title"><a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php printf( esc_attr__( 'Permalink to %s', 'welcart_basic' ), the_title_attribute( 'echo=0' ) ); ?>"><?php the_title(); ?></a></div>
<?php the_excerpt() ?>
<?php
$categories = get_the_category();
if ( $categories ) {
echo '<ul class="cf opt-tag">';
foreach ( $categories as $category ) {
if($category->term_id === 2){
continue;
}else{
echo '<li class="recommend">'.$category->name.'</li>';
}
}
echo '</ul>';
}
?>
</article>
<?php endwhile; ?>
</div>
<?php endif; ?>
まず「get_the_category()」という関数を用いて、投稿が属するカテゴリの一覧を取得します。
その後にリストでカテゴリを出力していきます。
もし表示させたくないカテゴリがあった場合に備えて、if文で除外の処理をしています。
if($category->term_id === 2){
continue;
}else{
echo '<li class="recommend">'.$category->name.'</li>';
}
レイアウト修正
最後にレイアウトを調整します。
.opt-tag li.category {
color: #4eb6a5;
margin-right:2px;
}
.opt-tag li {
background-color: #fff;
display: inline-block;
font-size: 10px;
margin: 2px 0;
padding: 0 5px;
line-height: 18px;
border-width: 1px;
border-style: solid;
}
これで完成です


