とりあえずカテゴリーの数だけ一覧表示する
「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; ?>