WordPressでカテゴリー別の記事一覧を作る

公開
更新日

スポンサーリンク

WordPressでちょっとだけ複雑なカテゴリーごとの記事一覧を作ったので、そのやり方についてメモ。

なお、以下に書くのはコードを自分で書き込むやり方です。同じことをやってくれるプラグインもあるんじゃないかなと思いますので、自分でコードを書き付けたくない人はそちらを探してみてください。

実際に動作を確認したWordPressのバージョンは3.1.2です。

どういう記事一覧を作ろうとしたかというと、「本来の記事一覧」と「おまけの記事一覧」を出力し、なおかつ「おまけの記事一覧」のみライター名を記すということをしたかったわけです。こういう感じですね。

本来の記事

  • 記事1
  • 記事2

おまけ記事

  • おまけ記事1(Aさん)
  • おまけ記事2(Bさん)

おまけ記事は「おまけ」カテゴリーに入っています。なので、「おまけ」カテゴリーの記事だけを除外した最近の投稿一覧と、「おまけ」カテゴリーの最近の投稿一覧という形にすればいいわけです。

さて、記事一覧の呼び出しですがget_posts()を使うことにします。get_posts()は本文以外の記事データを呼び出すWordPressタグです。記事のリストを出力するだけですから、本文は必要ありませんからね。

で、特定カテゴリーだけを除外する方法ですが、カテゴリーIDにマイナスをつけて呼び出すだけです。カテゴリーIDを知る方法は、管理画面→投稿→カテゴリーと進むと設定済みのカテゴリー一覧が表示されるので、そこで目的のカテゴリーのリンクを見ます。リンク中のtaxonomy=category&tag_ID=1という文字列がカテゴリーIDを示しています。この場合なら“1”ですね。

というわけで、カテゴリーID=1を除外して呼び出すにはcategory=-1となります。

$posts = get_posts( 'numberposts=10&category=-1' );

これで「ゲスト」カテゴリーの記事を除いた記事一覧を得ることができました。あとは記事リストを出力するだけです。

で、最終的にこういうコードになりました。これをsidebar.phpに直接書きこんで完成です。

<h3>本来の記事</h3>
<ul><?php
	$posts = get_posts( 'numberposts=10&category=-1' );
	global $post;
	if( $posts ): foreach( $posts as $post ): setup_postdata( $post );
		echo "<li><a href='";
		the_permalink();
		echo "'>";
		the_title();
		echo "</a></li>";
	endforeach; endif;
?></ul>
<h3>おまけ記事</h3>
<ul><?php
	$posts = get_posts( 'numberposts=10&category=1' );
	global $post;
	if( $posts ): foreach( $posts as $post ): setup_postdata( $post );
		echo "<li><a href='";
		the_permalink();
		echo "'>";
		the_title();
		echo "(";
		the_author();
		echo "さん)</a></li>";
	endforeach; endif;
?></ul>

スポンサーリンク


Comment