WordPressでカテゴリごとに別々のテンプレートを読み込ませる方法

wordpress

WordPressのcategory.phpとsingle.phpは通常、どのカテゴリに対しても同じテンプレートを読み込ませます。

例)
カテゴリA → category.php・single.php
カテゴリB → category.php・single.php
カテゴリC → category.php・single.php

これをカテゴリごとに別々のテンプレートを読み込ませる方法をご紹介します。紹介しているのはcategory.phpと書いていますが、archive.phpでも同じ結果を得られます。

例)
カテゴリA → category-1.php・single-1.php
カテゴリB → category-2.php・single-2.php
カテゴリC → category-3.php・single-3.php

category.php

category.phpは中身を全部を消して以下のように書き換えてください。

<?php if (is_category('スラッグまたはカテゴリID')) { // カテゴリA
  include(TEMPLATEPATH . '/category-1.php');
} else if (is_category('スラッグまたはカテゴリID')) { // カテゴリB
  include(TEMPLATEPATH . '/category-2.php');
} else if (is_category('スラッグまたはカテゴリID')) { // カテゴリC
  include(TEMPLATEPATH . '/category-3.php');
} else {
  include(TEMPLATEPATH . '/category-4.php');
}
?>

なおここではどのカテゴリにも該当しない場合、category-4.phpが適用されるようになっています。

single.php

同じようにsingle.phpの中身も全部消して以下のように書き換えてください。

<?php if ( in_category('スラッグまたはカテゴリID') ) { // カテゴリA
  include(TEMPLATEPATH . '/single-1.php');
} else if ( in_category('スラッグまたはカテゴリID') ) { // カテゴリB
  include(TEMPLATEPATH . '/single-2.php');
} else if ( in_category('スラッグまたはカテゴリID') ) { // カテゴリC
  include(TEMPLATEPATH . '/single-3.php');
} else {
  include(TEMPLATEPATH . '/single-4.php');
}
?>

これで完了です。あとはそれぞれcategory-◯.php、single-◯.phpをいつものように編集して頂いたらOKです。