WordPressに関する情報や技術紹介です

個別記事を属するカテゴリーと同じデザインにする

カテゴリーのトップページだけでなく、個別記事のデザインもカテゴリーと同じデザインを適用しようとした場合にどうすれば良いのか・・・。
個別ページに行った時に、single.phpの中でカテゴリーを調べて該当するページに飛ばせば良い、というのは分かるが「じゃあどういう構文?」と考えたら全然分からない。

諦めかけたがフォーラムでズバリの解決方法を発見。
フォーラム万歳!!
近いものを試したが、 $post=$wp_query->post; というのは知らなかった。これによりテンプレートタグの in_category() が効いてくれて解決。
以下がその手順。

  1. 「single.php」をコピーして「single-base.php」と「single-6.php」というファイルを作成。※コピーした名前は何でも良い
  2. 「single.php」を開いて中身を全て削除。次のスクリプトを入力して保存。全てのファイルをアップロード
<?php 
$post = $wp_query->post; 

if(in_category('6')) { 
	include(TEMPLATEPATH . '/single-6.php'); 
} else { 
	include(TEMPLATEPATH . '/single-base.php'); 
} 
?>

以上で、個別記事ページにもカテゴリー毎でのテンプレートが採用される。
あとはカテゴリトップ用の「category-xx.php」と個別記事用の「single-xx.php」のデザインを統一しておけば良い。

タグ
, , ,
トラックバックURL
  • カイカイ さん:
    2009/1/6 火曜日 12:43:56

    いつも参考にさせていただいております。
    初心者ゆえの質問になりますが、上記single.phpの
    ソースですが、もし複数カテゴリがあり、複数の
    個別ページを設定する場合は、同じような記述を
    繰り返し記入すれば大丈夫でしょうか。

    お恥ずかしい質問ですがご返答いただけると幸い
    です。何卒よろしくお願い致します。

  • ISプランニング さん:
    2009/1/6 火曜日 13:09:12

    >カイカイ様
    コメントありがとうございます。
    ご質問の内容ですが、それで良いと思います。


    if(in_category('6')) {
    include(TEMPLATEPATH . '/single-6.php');
    } elseif(in_category('9')) {
    include(TEMPLATEPATH . '/single-9.php');
    } else {
    include(TEMPLATEPATH . '/single-base.php');
    }

    こんな感じになります。

  • カイカイ さん:
    2009/1/6 火曜日 15:34:47

    早々にご回答いただき、誠にありがとうございました!!

    おかげで希望通りのサイトができそうです!!
    今後も参考にさせていただきますので、何卒よろし
    くお願い致します。

  • ISプランニング さん:
    2009/1/6 火曜日 15:49:43

    >カイカイ様
    お役に立てて何よりです。
    仕事の片手間で気付いた事やハマった事などを書いているので更新頻度は遅いのですが、私と同じようにちょっとした事で悩んでいる方の役に立っていただけると嬉しいです。

    今後とも宜しくお願い致します。

  • 本当に感謝 さん:
    2010/12/25 土曜日 20:31:18

    ずーっと悩んでいたことが、解決しました。
    助かりました。感謝です。orz。最高のクリスマスプレゼントです。

  • ISプランニング さん:
    2010/12/27 月曜日 09:21:12

    >本当に感謝 さん
    名前にするぐらいなので本当に感謝していただいてるのですね(笑)。

    思わぬところでサンタになれたのでこちらも嬉しいです。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

ページTOPに戻る