テンプレート

いよいよ WordPress カスタマイズで一番核になるテンプレートの話です。

テンプレートとは、Web 上で WordPress サイトをどのように表示させるかをコントロールするファイルのことです。
MySQL データベースより情報を取得し、クライアントのブラウザへ送信する HTML コードを生成するという重要な役割をもちます。

テンプレートファイルは一つではなく、状況に応じて使われるようになっています。

よくあるWEBページは、ヘッダー、サイドバー、コンテンツ、フッターといったブロックから構成されますが、こうした各ブロックごとにテンプレートが用意されています。

ヘッダーを出力するのはヘッダーテンプレート(header.php)、サイドバーを表出力するのはサイドバーテンプレート(sidebar.php)、フッターを出力するのはフッターテンプレート(footer.php)といった具合です。

ヘッダーテンプレート、サイドバーテンプレート、フッターテンプレートは、index.php など他のテンプレートから読み込まれています(すなわち、テンプレートファイルから別のテンプレートファイルが呼び出されるようになっています)。

これによって、header.phpを変更すれば、index.php や single.php や page.php などheader.php を読み込んでいるテンプレートを使って表示されているすべてのページのヘッダーが変更されることになります。

テンプレート階層

例えば投稿記事を表示する場合、通常は single.php というテンプレートが使われます。しかしそれがテーマフォルダーの中に見つからなかった場合は、singular.php が使われます。そしてそれも無かった場合は index.php というテンプレートが使われることになっています。

さらに、single-post.php があった場合は、single.php に優先して single-post.php が使われます。

すなわち優先順位の高いテンプレートを探して、それが無かったら次に優先順位の高いテンプレートを探すというぐあいになっており、その優先順位の階層をテンプレート階層といいます。
階層の一番下にあるのが、index.php で、どんなページでも優先順位の高いテンプレートな見つからなければ index.php で表示されることになります。

ですから、どんなテーマにも最低 index.php は無ければいけません。
WordPressのテンプレート階層index.php は最後の砦なので、どんなテーマにもありますが、それ以外のテンプレートはテーマによって、ある場合と無い場合があります。

例えば閲覧者がサイトのトップにアクセスしたとき表示されるフロントページは、gush2では home.php というテンプレートがあるのでそれが使われますが、Twenty Fifteen には用意されていませんので index.php が使用されます。

カスタマイズでよく使うテンプレートをあげておきます。

  • home.php フロントページ用テンプレート
  • single.php 個別投稿用テンプレート
  • page.php 固定ページ用テンプレート
  • archive.php アーカイブページ用テンプレート
  • 404.php 404エラーページ用テンプレート

すなわち、例えば固定ページをカスタマイズしたい場合は page.php をカスタマイズすればいいということになります。

子テーマのテンプレート

以前の記事「カスタマイズの予備知識」の「子テーマ」で gush2 の子テーマ gush2-child を作成しましたが、このときは空のフォルダーをつくってそこに style.css を置いただけです。

「では子テーマのテンプレートはどうなるの?」と思われるかもしれませんが、style.css に親テーマの場所を書いたことを思い出してください。
そう、子テーマのフォルダーに無ければ、親テーマのテンプレートが使われるのです。

これでページを作成するときに、どのテンプレートが使われるかとういうことがだいたい分りました。

管理画面で子テーマを有効化しておきましょう。

独自のテンプレート

固定ページは普通 page.php で表示されますが、ある固定ページだけは他の固定ページと違ったテンプレートを使いたい場合があります。
slug が xxxx という固定ページ用のテンプレートを作成したとすれば、そのテンプレートの名前を page-XXXX.php にします。そして page-xxxx.php の先頭に、

という行を入れておきます。○○○○○○○○○○ の部分は日本語でもかまいません。

そうすると、管理画面の当該固定ページの編集画面の「ページ属性」のところに、「テンプレート」という項目が現れます。最初は[デフォルトテンプレート]になっているので、これを○○○○○○○○○○に変更して[更新]します。

スポンサーリンク