WordPressの同一カテゴリ内の記事リスト

できたできた、とうとうできた!
WordPressでは、同一カテゴリ内の「ページ」を出力する関数はあっても、「投稿」で同様のことができる関数がないんですよね。
おそらく、CMS的にWordPressを使う際はページを使って欲しいんでしょうけど、投稿を使いたい場合もあるんですよ。既存サイトのURLを引き継ぎたい場合とか、ページ数が異様に多い場合とか。

そんなときのための、同一カテゴリ内の記事リスト出力法。

(方針)
get_the_category()でカテゴリーIDを取得、それを変数に代入して、get_posts()で記事リストをループ出力。
コードで言うとこんな感じです。

<?php
$cat = get_the_category();&nbsp; $cat = $cat[0];{
$catid= "$cat->cat_ID";
}
$myposts = get_posts('category='.$catid);
foreach($myposts as $post) :?>
&nbsp;&nbsp;&nbsp; <li class="time<?php the_time('G-i'); ?>"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>

これでWordPressの記事式CMSでローカルメニューができる。
これ、見る人が見たら時価40万円くらいの価値がありますぜ。

ちなみにclass=”time…”という不思議なクラス指定が入っているのは、ヘッダーで

<style type="text/css" media="screen">
li.time<?php the_time('G-i');?> a{
	color:#333333;
	font-weight:bold;
	text-decoration: none;
	}
</style>

等と入れてハイライトさせるため。意外とこれが出来ないので若干のとんちソリューションとなりました。

広告

注意!

副作用として、タイトル[the_title()]が、なぜかそのカテゴリーの最古の記事に固定されてしまうので、代わりに[single_post_title()]を使ってください。

注意2!
コメントの内容が別記事のものになってしまいます。
foreach($myposts as $post) :?>
の部分に問題があるようです。$postを別の変数に変えたら大丈夫でしたが、代わりにこのリスト出力が機能しなくなります。対応研究中。。。

About: dacelo


6 thoughts on “WordPressの同一カテゴリ内の記事リスト”

Leave a Reply

Your email address will not be published. Required fields are marked *