
Wordpressの公式テンプレート階層チャートで命名規則をチェック
- 2013-02-26 Tue 11:37:14
- wordpress

wordpressをCMSとして利用するとき、カスタム投稿タイプやカスタムタクソノミーを扱うことが増えてくると思います。各タクソノミーごとに表示を切り替えたい場合などに、Wordpress公式のテンプレート階層チャートを参照すると便利です。
条件分岐タグを使って切り分けることもできます
if (is_category(9)) {
// カテゴリ 9 に当てはまるとき
include(TEMPLATEPATH . '/single2.php');
} else {
// 他のカテゴリの投稿のとき
include(TEMPLATEPATH . '/single1.php');
}
?>
→wordpress codex の「テーマの作成」のクエリベースのテンプレートを御覧ください。
この場合、category.phpとかindex.phpとかで分岐してくれればわかりやすいのですが
includeにincludeを重ねて参照を繰り返し、せっかくwordpressが用意してくれているわかりやすい規則を無視して作るよりは、テンプレート階層の命名規則に合わせて各phpを作成し
表示を切り替える部分だけ共通項目として、一気に条件分岐させた別のphpをincludeするほうが後々見やすくなるとおもいます。
内側から制御するか、外側から制御するか、といったポリシーみたいな考えになってくるのですが、作るサイトの規模や、表示の切り替えが多くなるようだったらテンプレート階層を有効に使っていく、規模が小さい場合は単純にcategory.phpとかで切り替えを行う、というように柔軟に対応できることが大事です。
Wordpressテンプレート内での優先順位
1.category-slug.php -- 特定のカテゴリー用テンプレート
2.category-ID.php -- 特定のカテゴリー用テンプレート
3.category.php -- カテゴリーの汎用テンプレート
4.archive.php -- 汎用アーカイブテンプレート(タグ・日別アーカイブなどと共用)
5.index.php
2.category-ID.php -- 特定のカテゴリー用テンプレート
3.category.php -- カテゴリーの汎用テンプレート
4.archive.php -- 汎用アーカイブテンプレート(タグ・日別アーカイブなどと共用)
5.index.php
基本的には、上から順番にWordpressは探していきます。スラッグが最優先、次がIDで・・
指定の名前が見つからない場合はindex.phpを採用するしくみになっています。
サイトフロントページ
front-page.php
front-page.phpがあると、環境設定に関係なくサイトのトップに表示されるようになります。バージョン3.0以降に対応しています。
個別投稿表示
1.single-{post_type}.php - 投稿タイプ が videos の場合は single-videos.php (バージョン 3.0 以降)
2.single.php
3.index.php
2.single.php
3.index.php
single.phpでも任意で表示を変えたい場合は、個別に投稿記事のテンプレートをスイッチできるようなプラグイン等を利用するのもいいとおもいます。
カテゴリー表示
1.category-slug.php - 例えばカテゴリーのスラッグが "news" の場合は category-news.php
2.category-ID.php - 例えばカテゴリーID 6 用のテンプレートであれば category-6.php
3.category.php
4.archive.php
5.index.php
2.category-ID.php - 例えばカテゴリーID 6 用のテンプレートであれば category-6.php
3.category.php
4.archive.php
5.index.php
カテゴリーIDで設定すると、万が一共有している人がカテゴリーを消して新規で再度作成した場合などに困るとおもうのですが、スラッグを指定しておけばその部分を回避できます。
通常のブログのように記事一覧がトップページとほとんど変わらないならarchive.phpあたりでもいいともおいます。
タグ表示
1.tag-slug.php
2.tag-ID.php
3.tag.php
4.archive.php
5.index.php
2.tag-ID.php
3.tag.php
4.archive.php
5.index.php
カスタムタクソノミーを使いだすと、タグの重要度は低くなってきます。
ここは、archive.phpを呼び出しておいてもいいかもしれません。
カスタム分類(タクソノミー)表示
1.taxonomy-{taxonomy}-{term}.php - 例えば分類名が "sometax"、スラッグが "someterm" の場合は taxonomy-sometax-someterm.php
2.taxonomy-{taxonomy}.php - 例えば分類名が "sometax" の場合は taxonomy-sometax.php
3.taxonomy.php
4.archive.php
5.index.php
2.taxonomy-{taxonomy}.php - 例えば分類名が "sometax" の場合は taxonomy-sometax.php
3.taxonomy.php
4.archive.php
5.index.php
タクソノミーは一段階細かく指定ができるようになります。
カスタム投稿タイプ表示
1.archive-{post_type}.php - 例えば投稿タイプ名が "product" の場合は archive-product.php.
2.archive.php
3.index.php
2.archive.php
3.index.php
カスタム投稿タイプでは、archive-{post_type}.phpあたりを使うことが多いです。
検索結果表示
1.search.php
2.index.php
2.index.php
検索結果のなかで表示を変えたい、一覧表示も変更する場合はsearch.phpをつかうといいでしょう。
404 (Not Found) 表示
1.404.php
2.index.php
2.index.php
条件分岐させてindex.phpに書くことがよくありますが、404.phpに分けておくとあとで見やすかったり便利だったりします。
その他のインクルードファイル
1.loop-{ループの対象}.php
ex1.loop-taxonomy.php
ex2.loop-category.php
ex1.loop-taxonomy.php
ex2.loop-category.php
条件分岐やループなど、インクルードされていくファイルも {動作}-{対象}.php としておくと今後読みやすいテンプレート構成になっていくと思います。
テンプレートディレクトリの中にディレクトリを置いても読みに行くのでファイル数が多くなりそうだったら
{動作}/{動作}-{対象}.php ex. loop/loop-taxonomy.php みたいにしてもよさそうです。
※既にwordpressに予約されている言葉と被らないようにする必要があります。
Wordpress公式テンプレート階層
→wordpress codex テンプレート階層
→テンプレート階層のチャート図
wordpressのしくみを最大限に利用する
Wordpressにはこういった複雑なCMSにも対応できるような準備ができています。最大限に利用しましょう。その上で、single.phpを任意表示切り替えするようなプラグインを使うなど、拡張していくとシンプルに構成していくことができるとおもいます。
各ウェブサイトごとに、アタマを柔軟に、臨機応変に対応できるようなテンプレートファイルを構成を目指しましょう。
- 関連記事
-
-
WordPressを使うかどうかを見極めることが必要になってきていると感じています 2013/05/20
-
WordPressで複数のクリエイターが存在するポートフォリオを作る考え方 2013/03/13
-
WordPress3.6ではUIの更新と、タンブラー風テーマが付属されるかも 2013/03/09
-
Wordpressの公式テンプレート階層チャートで命名規則をチェック 2013/02/26
-
wordpress3.5.1で使えるメンテナンスモードプラグイン「Maintenance by fruitfulcode」 2013/02/25
-
ここ最近使ってみて便利だったWordpressプラグイン 2012/06/26
-
Wordpress+iphoneのみで更新できる環境をつくる方法 2011/10/25
-