Yuriko.Net 個別記事
2009-09-27

カテゴリー別新着記事を見せる
先日から、http://www.yuriko.net/arc/ の URL で「カテゴリー別新着」が見られるようにしました。この URL は、手書き HTML/自作ウェブログツールの時代では「最近 NN 日分」の記事を見せていたのですが、WordPress に変更してからは Not Found となっていました。Google ウェブマスターツールを利用するようになって、サイト内のリンク切れがつぶさに確認できるようになりましたが、このとき、/arc/ へのリンク切れが結構多いことに気がつきました。これではいかんということで対応したものです。
そもそも、当サイトの URL 体系が /YYYY/MM/DD/ じゃなくて /arc/YYYY/MM/DD/ とかにしたのは、サイトを構築するツールの変更を容易に行えるように準備したものです。/ 直下に YYYY を切る方が明らかに美しいですが、ツールの都合によってサブディレクトリーの下でないと設置しにくい場合に困ると考えたのです。結局、WordPress だと / 直下に入れることが容易だったため、この準備は冗長になっています。
今回はいろいろ試行錯誤しましたが、最終的には次の手法で落ち着きました。
- カテゴリー別新着用のページテンプレートを作ります。ページテンプレートには以下のようなコードを入れます。
get_categories()の引数ですが、サイドバーのカテゴリー一覧と同じ指定 (投稿数の降順) です。<div class="post hentry"> <h3>カテゴリー別新着</h3> <p> <?php $categories = get_categories('orderby=count&order=desc'); if (count($categories)) { ?> <dl> <?php foreach ($categories as $c) { query_posts('cat=' . intval($c->term_id) . '&posts_per_page=1&orderby=date&order=DESC'); if (have_posts()) { the_post(); printf('<dt>%1$s</dt><dd>' . . '<a href="%2$s">%3$s</a> (%4$s)</dd>' . "\n", wp_specialchars($c->name), get_permalink(), get_the_title(), get_the_time('Y-m-d H:i:s')); } } ?> </dl> <?php } ?> </p></div> - 固定ページを1つ作り、ページスラッグを「arc」とします。パーマリンク体系である「/arc/%year%/%monthnum%/%date%/%postname%/」と重複するような気がしますが、WordPress は投稿かページかをきちんと区別してくれて、/arc/2009/ ならば投稿 (の年別アーカイブ)、/arc/ ならば固定ページとして処理してくれます。
この手法は、パーマリンク体系が「/archives/%post_id%/」の場合にも応用できますね。この場合「/archives/」という URL になるような固定ページを作ればいいのです。パーマリンク体系が、ごく普通の「/%year%/%monthnum%/%date%/%postname%/」だったら、カテゴリー新着用には「/category/」という URL が適切でしょうか。


上に戻る
[...] Yuriko.Net » カテゴリー別新着記事を見せる [...]