WordPress 2.7.1のテーマ・テンプレートの構成

WordPress 2.7.1のテーマ・テンプレートの構成について、ソースコードを基に調べ直してみました。

テーマ・テンプレートの大まかな構成・階層については、「WordPressのテーマのファイル構成一覧と解説(2.7対応版) | コリス」で紹介されているのでそちらをご覧ください。今回は、公式サイトや他のサイトでは解説されていないものや補足的な説明について書いています。

ここで解説している添付ファイルテンプレートやタクソノミーテンプレートを用意することで、添付ファイルのMIMEタイプ(コンテントタイプ)やカテゴリー、リンクカテゴリー(名前、スラッグ)等ごとにテンプレートを振り分けることができます。

添付ファイルテンプレート

添付ファイルページにアクセスがあった場合、次の優先順位で存在するテンプレートが呼び出されます。is_attachment()が真になる時に呼び出されます。

  1. MIMEタイプ.php
  2. MIMEサブタイプ.php
  3. MIMEタイプ_MIMEサブタイプ.php
  4. attachment.php
  5. single.php
  6. index.php

例えば、MIMEタイプ(コンテントタイプ)が「image/png」である添付ファイルのページにアクセスがあった場合、次の優先順位でテンプレートが呼び出されます。

  1. image.php
  2. png.php
  3. image_png.php
  4. attachment.php
  5. single.php
  6. index.php

普通に考えると、MIMEタイプ_MIMEサブタイプ.phpの優先順位が一番高そうですが、そうなっていないのは互換性のためなのかもしれません。

タクソノミーテンプレート

タクソノミーページにアクセスがあった場合に、次の優先順位で存在するテンプレートが呼び出されます。is_term()が真になる時、つまり、「taxonomy=taxonomy&tern=term」のようなクエリー付きでアクセスがあった場合に呼び出されます。

  1. taxonomy-taxonomy-term.php
  2. taxonomy-taxonomy.php
  3. taxonomy.php
  4. archive.php
  5. index.php

例えば、「taxonomy=category&term=Uncategorized」というクエリー付きでアクセスがあった場合、次の優先順位でテンプレートが呼び出されます。

  1. taxonomy-category-Uncategorized.php
  2. taxonomy-category.php
  3. taxonomy.php
  4. archive.php
  5. index.php

通常、taxonomyには、データベースのwp_term_taxonomyテーブルのtaxonomyフィールドの値が入ります。つまり、カテゴリーを表す「category」やリンクカテゴリーを表す「link_category」、タグを表す「post_tag」等です。また、termには、wp_termsテーブルのnameフィールドの値が入ります。つまり、カテゴリー名等です。その他、タクソノミーは一部のプラグイン等で利用されます。

テーマ側でタクソノミーページへのリンクを生成することで、カテゴリー名別にテンプレートを振り分けたりすることができます。また、termパラメーターの値として、nameフィールドの代わりにslugフィールドの値を出力することで、カテゴリースラッグでテンプレートを振り分けることも可能です。

header.php, sidebar.php, footer.php, comments.php, comments-popup.php

header.php(ヘッダー), sidebar.php(サイドバー), footer.php(フッター), comments.php(コメント), comments-popup.php(ポップアップコメント)は、これらのテンプレートファイルがない場合はdefaultテーマのテンプレートが使われます。

検索フォームテンプレート

searchform.php(検索フォーム)は、WordPress 2.7で追加されたget_search_form()を利用して、他のテンプレートから呼び出すことができます。ファイルがない場合はWordPress標準の検索フォーム(HTML)が出力されます。

theloop.php

theloop.php(コンテンツ)は、慣習として利用されているテンプレートファイルです。別のテンプレートからinclude()するために使われるものなので、特にこのファイル名でなければならないと言うわけではありません。

rtl.css, image.php, video.php, audio.php, application.php

右横書き言語用のスタイルシートであるrtl.cssや添付ファイルテンプレートのimage.php, video.php, audio.php, application.php等がある場合は、管理画面の「テーマ編集」でこれらのファイルの説明が表示されます。

スクリーンショット

管理画面の「テーマ」に表示されるテーマのスクリーンショットは次の優先順位で読み込まれます。

  1. screenshot.png
  2. screenshot.gif
  3. screenshot.jpg
  4. screenshot.jpeg

スタイルシート

管理画面の「テーマ」に表示されるテーマの情報はstyle.cssに次のように記述します。

/*   
Theme Name: テーマ名
Theme URI: テーマが公開元URI
Description: テーマの説明
Author: テーマ作者の名前(デフォルトは __('Anonymous') )
Author URI: テーマ作者の連絡先URI
Template: 親テーマ(親テーマを継承する場合のみ記述 / テーマのディレクトリ名「default」等)
Version: テーマのバージョン
Status: テーマのステータス(デフォルトは「publish」)
Tags: テーマのタグ(カンマ区切り)
*/

CSSとして妥当である限り、また行をまたがっていない限りは記述する箇所は関係ありません。

なお、「Theme Name」「Description」「Template」「Version」「Status」「Author」には、HTMLのa(href, title属性), abbr(title属性), acronym(title属性), code, em, strongタグが利用できます。

テンプレートの特徴ごとに節を分け、より具体的な解説に修正しました。

コメント (0)

この記事へのコメントはまだありません。

コメントフォーム

トラックバック (0)

この記事へのトラックバックはまだありません。

この記事のトラックバックURI
http://dxd8.com/archives/190/trackback/
この記事のURI
http://dxd8.com/archives/190/