カテゴリごと別々に《single.php》のデザインを変えたい場合


投稿した記事(単一の記事)毎に別のsingle.phpを適用したい!

っと言うわけで、例えば、

「wordpress」と「css」のカテゴリがあったとして、それらのカテゴリに属した記事を表示させる時に、各々別のデザインを適用させたい場合の話。

「single.php」は「page.php」みたいに「page-1.php」とかの名前をつけてテンプレートを増やしていくことができないので、「single.php」自体に条件分岐を設けて、その条件に応じて別のテンプレートを読み込むようにしてこの動作を実現させます。

まず、カテゴリ(x)の時に適用するテンプレート(single-1.phpとしましょう)と、カテゴリ(y)の時に適用するテンプレート(single-2.phpとしましょう)を準備します。

そして、single.php自体の内容を下記の通りにします。

<?php
$post = $wp_query->post;
if ( in_category('【カテゴリ(x)のカテゴリID】') ) {
include(TEMPLATEPATH.'/single-1.php');
} else {
include(TEMPLATEPATH.'/single-2.php');
}
?>

さらに複数のテンプレートを適用させたい場合は条件を増やしましょう。
(x,y,z………)

<?php
$post = $wp_query->post;
if ( in_category('【カテゴリID】') ) {
include(TEMPLATEPATH.'/single-1.php');
elseif ( in_category('【カテゴリID】') ) {
include(TEMPLATEPATH.'/single-2.php');
} elseif ( in_category('【カテゴリID】') ) {
include(TEMPLATEPATH.'/single-3.php');
} else {
include(TEMPLATEPATH.'/single-4.php');
}
?>

ループ内の記事を古い順にソート


ループ内の記事を古い順に並び替えて抽出する。
ループの前にこれを挿入するだけ。

あーら簡単(^^;


<?php $posts = query_posts( $query_string . '&order=asc' ); ?>

<?php if (have_posts()) : /*(ループ例です) */?>