とりあえずカテゴリーの数だけ一覧表示する
「get_categories」でカテゴリー情報を取得することができます。
あとはその数だけループさせればカテゴリー別の一覧が表示できますね。
Theme file
<?php $categories = get_categories(); foreach($categories as $category) : ?> <h3><?php echo $category->cat_name; ?></h3> <ul> <?php query_posts('showposts=5&cat='.$category->cat_ID); if (have_posts()) : while (have_posts()) : the_post(); ?> <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li> <?php endwhile; endif; ?> </ul> <?php endforeach; ?>
カテゴリーのIDと順番を指定して表示する
コーポレートサイトを作成していると、一覧の順番やカテゴリーを指定して出力したいことがあると思います。
たとえば10個カテゴリーがあるうちの3つだけ取得したい。さらに順番は4→6→5の並びにするとします。
Theme file
<?php $categorys = array(4,6,5); for ($i=0; $i<count($categorys); $i++) : ?> <h3><?php echo esc_html(get_catname($categorys[$i])); ?></h3> <ul> <?php query_posts('showposts=5&cat='.$categorys[$i]); if (have_posts()) : while (have_posts()) : the_post(); ?> <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> </ul> <?php else: ?> <li><?php echo esc_html(get_catname($categorys[$i]))."はまだありません。"; ?></li> </ul> <?php endif; ?> <?php endfor; ?>
2行目の「$categorys」で出力するカテゴリーのID指定をしています。
この配列の数だけループさせ、直接カテゴリーIDで表示するカテゴリーを指定してやればできますね。
foreachでは昇順になってしまうためforにしました。(何か方法はあるはず?)
カスタム分類を表示する場合
IDからカスタム分類の情報を取得する場合は「get_term」を使用します。
たとえば「faq」というカスタム分類の場合は次の用になります。
Theme file
<?php $categorys = array(9,10); for ($i=0; $i<count($categorys); $i++) : $faq_term = get_term($categorys[$i], 'faq'); ?> <h3><?php echo esc_html($faq_term->name); ?></h3> <ul> <?php query_posts('showposts=5&faq='.$faq_term->slug); if (have_posts()) : while (have_posts()) : the_post(); ?> <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> </ul> <?php else: ?> <li><?php echo esc_html($faq_term->name)."はまだありません。"; ?></li> </ul> <?php endif; ?> <?php endfor; ?>