マレーシアの日系IT企業で働く30代のウェブエンジニアの備忘録
記事投稿ページをカテゴリーごとに違う仕様にしたいときのsingle.php記述方法
ワードプレスでブログやウェブサイトを作っていると『このカテゴリーにだけこのバナーを毎回表示させたいな』とか『このカテゴリーだけデザインをガラッと変えた記事にしたいな』など、カテゴリーごとに仕様を変える必要が出てくることがあります。
しかしsingle.phpは1つしかないので泣く泣く毎回記事の中にバナーを挿入したり、デザインをどちらかに統一したり…。
そんな時に使えるカテゴリーごとにsingle.phpを分ける方法です。
function.phpなどを触らないので初心者でも書きやすい
このようなちょっとトリッキーな分岐などはfunction.phpに追記したりすることが多く、少しでもコードにミスがあると画面が表示されなくなったり、真っ白になってしまうので抵抗がある方もいると思います。
ですがsingle.phpのカテゴリーごとの分岐はとても簡単なコードをコピペするだけで出来てしまうので安心です。
single.phpへの記述
まずはsingle.phpに下記のコードをコピペします。
<?php if (in_category('カテゴリスラッグ名1')) { include(TEMPLATEPATH.'/single-カテゴリスラッグ名1.php'); } elseif(in_category('カテゴリスラッグ名2')) { include(TEMPLATEPATH.'/single-カテゴリスラッグ名2.php'); } else { include(TEMPLATEPATH.'/single-default.php'); } ?>
どんなことが書かれているかというと…
カテゴリのスラッグが【カテゴリスラッグ名1】のときは【single-カテゴリスラッグ名1.php】を読み込んでね。
カテゴリのスラッグが【カテゴリスラッグ名2】のときは【single-カテゴリスラッグ名2.php】を読み込んでね。
それ以外のカテゴリスラッグのときは【single.default.php】を読み込んでね。
ということが書かれています。
ですのでテーマフォルダの中に【single-カテゴリスラッグ名1.php】【single-カテゴリスラッグ名2.php】【single-default.php】を新しく作る必要があります。
single.phpがカテゴリごとに分けられるので、カテゴリごとにデザインを変えたりCSSを変えることが出来ます。
実際にカテゴリスラッグ名を入れてみるとこんな感じ
<?php if (in_category('news')) { include(TEMPLATEPATH.'/single-news.php'); } elseif(in_category('works')) { include(TEMPLATEPATH.'/single-works.php'); } else { include(TEMPLATEPATH.'/single-default.php'); } ?>
カテゴリスラッグ名を入れてみるとこんな感じになります。
newsスラッグのときはsingle-news.phpを、
worksスラッグのときはsingle-works.phpを、
それ以外のスラッグのときはsingle-default.phpを読み込むように書いてあります。
この場合はテーマフォルダに上記3つのphpファイルを追加する必要がありますのでファイル名の書き間違えなどに気をつけてください。
分岐ができたらあとは各々のphpを普通に書くだけでOKです。
single.phpに分岐コードを書いたあとは各々のphpファイルを作りいつも通り普通に書くだけ
特別function.phpなど肝になるファイルを触ることなく、single.phpに分岐コードを書くだけなので非常に簡単ですね。
分岐したいカテゴリが2つだけの場合は【elseif(〜){〜}】の部分を削除すればOKですし、4以上になった場合は【elseif(〜){〜}】のあとに同じく【elseif(〜){〜}】を追加してあげればOKです。
そんなに頻繁に使うコードではないので、次回使うとき用にメモしておきます。