2018年6月27日 10:46 pm

ワードプレスで記事を書く際、カテゴリごとに違うテンプレートで吐き出したいという事もあるかと思います。

例えば、基本的には通常のブログを書いているけど、たまに本のレビューなんかもしており、そのレビューはカスタムフィールドなどでフォーマット化したページで表示したい。といった場合。

カスタムフィールドの使い方はまた別途お伝えしますが、ここれはカテゴリー毎に違うデザインのテンプレートを使う方法となります。

①既存のsingle.phpをローカルに保存します。

このsingle.phpが、普通に記事を投稿した際に記事詳細ページとして吐き出されるテンプレートです。

②single.phpを違う名前にリネームします。

これは通常の記事を書く際に使用します。
仮にsingle-default.phpとします。

③もう一度single.phpを違う名前にリネーム

こちらは、「本のレビュー」専用のページのテンプレートです。

例えば「本」というカテゴリ(スラッグはbooksとします。)に記事をアップする際に専用のフォーマットで表示されるようにするとして、single-books.phpなどにします。
single-booksの部分は何でも好きな文字列でOKです。ただし必ず半角英数にしてください。

④いったんサーバーにアップ

サーバーのテーマフォルダに上記①~③で作ったphpをアップします。今のところリネームしただけで、中身はそのままで大丈夫です。

アップしたら「外観」「テーマの編集」と進むと、右側のphpのリストにアップしたsingle.phpが表示されていると思います。

⑤カテゴリに合わせて分岐させる。

ここからはワードプレスのテーマの編集画面での作業です。

まず、single.phpを開きます。記事の詳細へアクセスする際まずはこのsingle.phpを見に行くので、ここに分岐を書きます。

すでにsingle.phpに入っているソースを丸ごと消して、以下に書き換えます。

 

<?php
  $post = $wp_query->post;
  if ( in_category('books') ) {
	  include(TEMPLATEPATH.'/single-books.php');
  } elseif ( in_category('xxx') ) {
	  include(TEMPLATEPATH.'/single2.php');
  } else {
	  include(TEMPLATEPATH.'/single-default.php');
  }
?>

3行目のbooksがカテゴリで設定したスラッグです。

4行目のsingle-books.phpが、本のレビューを吐き出すテンプレートです

上記の例では、booksというスラッグのカテゴリにチェックを入れて記事をアップすると、single-books.phpのフォーマットで記事ページを吐き出しますよ。

で、もしそれ以外にも同じようなことをしたいとして、それのスラッグがxxxだった場合、single2.phpで記事を吐き出しますよ。

それ以外のカテゴリの場合はsingle-default.phpで記事を吐き出しますよ。

という指令です。

single-books.phpの中身はここでは本のレビュー用ですので、カスタムフィールドなりなんなりで、それに合わせたphpにカスタマイズしてください。(この記事ではsingle.phpのカスタマイズは割愛します。)

single-default.phpは、通常の記事用のテンプレートなので、そのままで構いません。(もともと通常の記事を書く用のphpからリネームしてアップしただけなので)

 

Categorised in: ,