WordPressでget_postsを使ってカテゴリー別の新着一覧を出力する方法
2014.07.31
WEB制作のこと

このブログのサイドナビでも使用しているのですが、全てのカテゴリから、それぞれの新着記事を指定した件数だけ表示する方法です。
カテゴリ名を勝手に取得してくれるので、カテゴリを追加した時にテンプレートを更新せずに済みます。
出力されるHTMLはこんな感じですので、アコーディオンやタブ表示などで使えるかと。
<dl>
<dt>カテゴリA</dt>
<dd>
<ul>
<li><a href="記事へのリンク">カテゴリAの新着記事1</a>
<li><a href="記事へのリンク">カテゴリAの新着記事2</a>
<li><a href="記事へのリンク">カテゴリAの新着記事3</a>
<li><a href="記事へのリンク">カテゴリAの新着記事4</a>
<li><a href="記事へのリンク">カテゴリAの新着記事5</a>
</ul>
</dd>
<dt>カテゴリB</dt>
<dd>
<ul>
<li><a href="記事へのリンク">カテゴリBの新着記事1</a>
<li><a href="記事へのリンク">カテゴリBの新着記事2</a>
<li><a href="記事へのリンク">カテゴリBの新着記事3</a>
<li><a href="記事へのリンク">カテゴリBの新着記事4</a>
<li><a href="記事へのリンク">カテゴリBの新着記事5</a>
</ul>
</dd>
<dt>カテゴリC</dt>
<dd>
<ul>
<li><a href="記事へのリンク">カテゴリCの新着記事1</a>
<li><a href="記事へのリンク">カテゴリCの新着記事2</a>
<li><a href="記事へのリンク">カテゴリCの新着記事3</a>
<li><a href="記事へのリンク">カテゴリCの新着記事4</a>
<li><a href="記事へのリンク">カテゴリCの新着記事5</a>
</ul>
</dd>
~ カテゴリの数だけ出力 ~
</dl>
以下、実際の書き方です。
<dl>
<?php
$categories = get_categories();
foreach($categories as $category):
?>
<dt><?php echo $category->cat_name; ?></dt>
<dd>
<ul>
<?php
$catposts = get_posts(array(
'category' => $category->cat_ID,
'posts_per_page' => 5 //取得する記事件数
));
foreach($catposts as $post):
setup_postdata($post);
?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endforeach; wp_reset_postdata(); ?>
</ul>
</dd>
<?php endforeach; ?>
</dl>
get_postsの使用方法についてはこちらのブログを参考にさせていただきました。
今さら…いや今だから「WordPressのトップページに、新着記事数件を表示する」サンプルコードをあげとく[WordPress使えそうなスニペットシリーズ]
WordPress初心者の方は是非一読しておいた方が良い記事です。
僕もこれでWordPressのループ処理が少し怖くなくなりました。








