ニケッチャニッキ

はてなブログ・WordPressカスタマイズ・Androidプログラミング

カテゴリーアーカイブにサブカテゴリーリストを表示する方法

カテゴリーアーカイブページにサブカテゴリーリストを表示する方法です。

修正するのはarchive.phpで、使うのはwp_list_categories関数です。

以前はヘッダーナビをマウスオーバーするとサブカテゴリーがドロワー形式で表示されるようなデザインにしてたのですが、サブカテゴリーが増えてくるとダサいなーと思ったので。

サブカテゴリーリストを表示する方法

下記の画像が表示見本です。

archive.php
<?php if(is_category()){ ?>
    <?php if(get_category_children($cat)){ ?> 
        <ul class="child_cat_list"><?php wp_list_categories('title_li=&child_of='.$cat.'&show_count=true&orderby=count&order=desc'); ?></ul>
    <?php } ?>
<?php } ?>

is_categoryは現在のページがカテゴリーアーカイブページかどうかを確認する関数です。

get_category_childrenは子カテゴリーを持っているかどうかを確認する関数です。

$catという変数はWordPressのグローバル変数で、現在のカテゴリーIDが入っています。

wp_list_categoriesはリンク付きカテゴリーリストを表示する関数です。番号無し箇条書きリストで表示されます。

wp_list_categories関数の引数の説明

title_liリストのタイトル。デフォルトではCategoriesが設定されているので、非表示にしたいときは空の値を設定する。
child_ofこの引数でIDを指定すると、そのカテゴリーのサブカテゴリーのみが表示される。
show_countカテゴリーに属する投稿の件数を表示させるかどうか。デフォルトは非表示。
orderbyリストの表示基準を指定できる。ID、name(カテゴリー名)、slug、count(投稿数)term_groupのいずれかを指定する。デフォルトはカテゴリー名。
order表示順をASC(昇順)もしくはDESC(降順)から指定する。

他の引数についてはWord Press Codexを参照してください。

横並びで表示させたかったのでcssを次のように設定しました。

css
ul.child_cat_list li {
    display: inline;
}