WordPressによるWEBサイト開発5 – カスタムテンプレートとHTMLページの固定ページ化

かつて「よろずインドネシア」というインターネット同好会に所属して、独自コンテンツを作成したり掲示板のシスオペをやらせてもらったりしたことがあります。

その当時、BBS(Bulletin Board System)掲示板全盛期に、一人だけ「これからはブログの時代だ」と予言した方がいましたが、今考えるとすばらしい先見の明だと思います。

そのブログの時代もそろそろ終わり、次の新しいWEBコンテンツの時代が来るのかもしれません。

コンテンツが投稿中心か固定ページ中心かの違い

いまさらブログとWEBサイトという分類の仕方自体がイケてないかもしれませんが、大雑把に分けると両者の違いは日記とビジネスという目的の違いであり、日記のコンテンツが時系列の投稿中心になる一方で、ビジネスサイトは商品カタログや業界・技術紹介など固定ページ中心になります。

そのため固定ページでは複数パターンのテンプレートフォーマットが定義できたり、テンプレートフォーマットに依存しない独立したHTMLページをWordPressの固定ページとして組み込めたり、ページの親子関係による階層化ができたりします。

投稿でもカテゴリを使ってページの階層化が実現できますが、カスタムテンプレートで目的に応じてページデザインを変えたり、独立したHTMLページを組み込んだりすることはできません。

つまり投稿はひたすらコンテンツを生産するブロガー向き、固定ページはWEBサイト構築のための開発者向きともいえ、タブレットが利用者向きでPCが生産者向きである関係にも似ています。

テンプレート化するか個別ページをブログに組み込むかの違い

カスタムテンプレートは固定ページ用のレイアウトテンプレートですが、テンプレート化するか個別ページのままブログに組み込むかの判断は、WordPressループを使ってデータを取得するか否かによります。

言い換えればWordPressループという機能を使ったほうがより効率的であればテンプレート化するし、完全にマニュアルで作成したほうが楽であれば、独立して作成したHTMLファイルを固定ページっぽいPHPファイルの名前に変更して、ブログに組み込みます。

ただし検索クエリで引っ掛けるにはWordPressのテーブルにコンテンツが格納されていないと困るので、検索のためだけにWordPressの固定ページにコンテンツの中身だけを複製しておきます。

テンプレート化する場合

page.phpをコピーしてカスタムテンプレート名.phpを作成し、get_header()の上にコメントアウトとして「Template Name:」に続けてカスタムテンプレートの名前を書きます。

WordPress管理画面の固定ページの「ページ属性>テンプレート」で「カスタムテンプレート1」が選択できるようになります。

この場合のファイル名はなんでもOKで、WordPressがファイル名を見て何か判断する、ということはありません。
parent

通常なら新規固定ページ作成の場合は、デフォルトでpage.phpというフォーマットを使っていたのが、カスタムテンプレート名.phpというフォーマットも使えるようになったということです。

例えばこのブログ内で、自分参照用のApacheのHTTP環境変数リファレンスを作成する場合、サイドバーは取っ払ってブラウザの横幅一杯使って、jQuery UIタブで見やすいオリジナルのレイアウトに基づいて作成することができます。

テンプレート化するということは、コンテンツは通常どおり管理画面の固定ページから入力して、WordPressのテーブルに保存して、レイアウトだけテンプレートで制御するということです。

つまりテンプレートにはこれまでどおりWordPressループを配置する必要があり、これがないとテーブルに保存したコンテンツをテンプレートから呼び出せません。

テンプレート化せず個別ページをブログに組み込む場合

ここでよく考えてみると、自分が作りたいjQuery UIタブを使ったApacheのHTTP環境変数リファレンスは、読み物というよりリンク集であり、それをWordPressのテーブルに保存するやり方で作成しようとすると、表のデザインだけで大変な作業になります。

だったら通常HTMLとjQueryでリファレンスを作ってしまい、これを最後にWordPressに組み込むという発想のほうが仕事が早いはずです。

  1. 通常HTMLとjQueryでリファレンスを作成
  2. page-MyReference.phpという名前で保存
  3. 通常の固定ページのデフォルトテンプレートでスラッグをMyReferenceにして保存。

固定ページのテンプレート階層の優先順位

カスタムテンプレート.php>page-スラッグ名.php>page.php

ですから

https://www.indonesia-japan.com/MyReference/

で表示されるのは、コンテンツがベタ打ちされたpage-MyReference.phpになります。

ただこのままでは、WordPressの検索にひっかからないので

コンテンツ部分を固定ページの本文としてコピーし、WordPressの検索でひっかかるようにする。

という追加作業を行ないます。

大雑把ですが、カスタムテンプレートまではブログの範疇であり、既存のHTMLファイルをWordPressに組み込むようなことをはじめたときに、垣根を越えてWEBサイトになると言えるかもしれません。

こんな投稿も読まれています