カテゴリーの出力

カテゴリー出力のイラスト

個々の投稿はカテゴリーにいれることが多いですが、the_category という関数(テンプレートタグ)を使って、個々の投稿にその投稿が分類されるカテゴリーの一覧を出力することができます。

カテゴリーの出力

カテゴリーの情報を出力するには、the_category の関数を使います。

PHP

<?php the_category(); ?>

パラメータなしで the_category() と呼び出した場合、カテゴリーの一覧はリスト ul/li で出力されます。

HTML

<ul class="post-categories">
	<li><a href="カテゴリーのURL" rel="category">〇〇</a></li>
	<li><a href="カテゴリーのURL" rel="category">××</a></li>
	<li><a href="カテゴリーのURL" rel="category">△△</a></li>
</ul>

セパレータを指定して出力

the_category のパラメータとして、個々のカテゴリーを区切る文字(セパレータ)を指定することが可能です。

PHP

<?php the_category( ' / ' ); ?>

この場合、カテゴリーへの一覧は ul/li で囲まれず、ここのカテゴリーへのリンクの間にセパレータの文字列が出力されます。

リンクなしのカテゴリー名を出力

リンク無しでカテゴリー名を出力する場合には、以下の関数を使ってカテゴリー名を出力します。

PHP

<?php $cat = get_the_category(); $cat = $cat[0]; { echo $cat->cat_name; } ?>

件数付きの全カテゴリーの出力

サイドバーや任意の場所にサイトの全カテゴリーを表示させるには、wp_list_categories() という関数(テンプレートタグ)を使います。

デフォルトでは <li> タグで出力されるので、以下のように記述します。

PHP

<ul>
<?php wp_list_categories(); ?>
</ul>

カテゴリーがリストとしてマークアップされますが、何もパラメータを指定しないと、「カテゴリー」というタイトルが表示され、そのあとにカテゴリー名が表示されてしまうので、title_li というパラメータを使い非表示にします。

それに、記事の投稿件数を表示させるには show-count というパラメータを使い表示させることができ、この title_lishow-count の関数を組み合わせて出力します。

PHP

<ul>
<?php
  $args = array(
    'show_count' => 1,
    'title_li'  => ''
  );
  wp_list_categories($args); 
?>
</ul>

親子階層のカテゴリーを件数付きで出力

親子階層のカテゴリーを、一覧で li で主力させるには下記のように記述します。

表示順は管理画面の並び順で出力し、親と子がそれぞれ別に出力されるので、親の階層だけリンクなしで記述したりと、カスタマイズがしやすい記述です。

PHP

<ul>
<?php
$args = array(
    'orderby' => 'menu_order',
    'parent' => 0,
);
$categories = get_categories($args);
?>
<?php foreach( $categories as $category ) :?>
<li class="catparent">
<a href="<?php echo get_category_link( $category->term_id ) ;?>">
<?php echo $category->name ;?>(<?php echo $category->count;?>)
</a>
</li>
<?php
$childcatnum = count(get_term_children($category->cat_ID,'category'));
?>
<?php if($childcatnum > 0) :?>
<?php
$catchildargs = array('parent'=>$category->cat_ID);
$catchilds = get_categories($catchildargs);?>
<?php
foreach($catchilds as $catchild):?>
<?php $cat_link = get_category_link($catchild ->cat_ID);?>
<li>
<a href="<?php echo $cat_link ;?>">
<?php echo $catchild->name ;?>(<?php echo $catchild->count;?>)
</a>
</li>
<?php endforeach ;?>
<?php endif ;?>
<?php endforeach ;?>
</ul>