WEBOPIXEL

WordPressでカテゴリー別記事一覧を表示する方法

Posted: 2010.11.18 / Category: WordPress / Tag: 

Wordpressですべての記事一覧やカテゴリーページでの一覧表示などは、わりと標準で機能でできますが、一つのページでカテゴリー毎の一覧を表示したい場合は、ちょっとだけ手を加える必要があります。 この記事ではすべてのカテゴリー一覧を表示する方法と、カテゴリーIDを指定して表示する方法をご紹介します。

Sponsored Link

とりあえずカテゴリーの数だけ一覧表示する

「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; ?>

COMMENTS

のりお 2011-07-29 14:48 

ドキュメントとにらめっこしててもなかなか思いどおりに実現できなかったところ、ここの記事にたどり着きました。
参考になりました。
ありがとうございます!

ken 2011-08-20 19:50 

はじめまして。
こういう記事探してました!ありがとうございます。
カテゴリーのIDと順番を指定して表示するなんですが、今の記述だと各カテゴリが5コずつ表示されると思うのですが、トータルで5個っていうのはできるのでしょうか?

webOpixel 2011-08-22 11:17 

カテゴリーの数が3つと決まっているのであれば、
8行目の「showposts=5」のところを「2」にして、最後だけ条件分岐で1にすれば5個表示することができると思います。

ken 2011-08-23 21:57 

早速のお返事ありがとうございます。
無事解決いたしました。助かりました。

アメンボ 2012-09-06 18:15 

はじめまして、同じように特定のカスタム投稿内の記事を表示することはできないでしょうか?

webOpixel 2012-09-12 09:12 

カスタム分類ということでしょうか?
追記してみたのでご確認ください。

晴 2014-09-06 16:28 

はじめまして!
検索して辿り着き、とても助かりました。
ありがとうございました。

LEAVE A REPLY

コードを書く場合は<pre>で囲んでください。