子カテゴリのリストを出力するには wp_list_categories() で十分ですが、カテゴリが存在しない場合、カテゴリーなしと出力されてしまいます。ここで、カテゴリーなしと出力するのではなく、カテゴリが存在しない場合はカテゴリグループ自体を出力しないようにしたい場合は少し面倒な処理が必要になります。
注意しなければいけないことは下記2点。
- カテゴリ自体が存在してもカテゴリに記事が登録されていなければカテゴリは存在しないのと同じ扱いになる。つまり、カテゴリが存在するかしないかをチェックするだけではダメ。
- 同一の親カテゴリを持つカテゴリを取得するのは面倒くさいこと。
上記を踏まえた上でコードにすると下記のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $parent_id = 3; $child_category_str = get_category_children($parent_id); if($child_category_str != '') { $child_category = explode("/", $child_category_str); $post_count = 0; foreach($child_category as $value) { if($value == '') continue; $cat = get_category($value); $post_count += $cat->category_count; } } if($post_count > 0) { echo '<div class="category">'; echo '<h2><img src="' . get_bloginfo('template_directory') . '/images/common/sidebar_h2_category.gif" alt="カテゴリー" /></h2>'; echo '<ul>'; echo wp_list_categories('title_li=&child_of=' . $parent_id . '&echo=0'); echo '</ul>'; echo '</div>'; } |
$parent_id に親カテゴリ ID を入れれば子カテゴリが出力されます。子カテゴリが存在しなければ何も出力されません。
コメント