テンプレートパーツ化する
テンプレートパーツとは
1つのページを”部品”に分ける
一般的なサイト構造は、ヘッダー、投稿記事、サイドメニュー、フッターなどから構成されています。
WordPressでは、通常、それぞれの部分に対応したPHPファイルを作成します。これらのPHPファイルは”部品”のような役割を果たすので、テンプレートパーツと呼ばれます。
インクルードタグで読み込み
テンプレートパーツは、「インクルードタグ」で読み込み、サイトに反映させることが出来ます。インクルードタグはWordPressで用意されている関数です。下図は、テンプレートindex.phpに書いた各種インクルードタグで、テンプレートパーツを読み込んでいる様子を示しています。
ファイルを分割する理由
異なるテンプレート間でパーツを共用できる
テンプレートパーツ化すると、異なるテンプレート(トップページ用、カテゴリ表示用、固定ページ用・・・etc)間でパーツを共用できます。
パーツ化するとメンテナンス性が向上する
テンプレートパーツを利用することで、サイトのメンテナンスが容易になります。例えば、上図のサイトでメニューバーを変更する場合は、header.phpのファイル1つを修正するだけで済みます。
テンプレートパーツを作成する
1. テンプレートファイルを分割して、パーツファイルを作成する
index.phpファイルを分割して、4つのPHPファイルを新規作成します。
- header.php new!
- content.php new!
- sidebar.php new!
- footer.php new!
- index.php
header.php
今回は、index.phpファイルの先頭から<div id=”main”>タグまでをヘッダー部品とします。
content.php
ループ内の、投稿記事を表示する部分を抜き出します。
sidebar.php
サイドメニューの部分を切り出して、sidebar.phpとします。
footer.php
div#mainの終了タグから、元のHTMLファイルの最後までをfooter.phpとします。div#main開始タグまでをheader.phpに入れたので、それに対応する形にしています。
index.php(仮)
元のHTMLファイルのうち、以上の4つのパーツが切り取られた残りを、とりあえずindex.phpとしておきます。既に大部分が切り取られていましたね。
<!-- header.phpへ移動した --> <div id="content"> <?php if(have_posts()): while(have_posts()): the_post(); ?> <!-- content.phpへ移動した --> <?php endwhile; endif; ?> </div> <!-- sidebar.phpへ移動した --> <!-- footer.phpへ移動した -->
2. index.phpにインクルードタグを挿入する
パーツとして切り取られた場所に、インクルードタグを書きます。ヘッダー、サイドバー、フッターに関しては専用のWP関数が用意されています。content.phpは、パーツファイルを読み込むための汎用のWP関数を使います。
index.php
get_template_part()
テンプレートパーツを読み込むWordPress関数。引数に、インクルードするファイル名を指定する。拡張子(.php)は省略して指定する。
ファイル最後のPHPブロック終了タグは省略OK
PHPブロックの終了タグがファイルの最後にくる場合は、省略できます。
まとめ
2ステップで完了します。手順はシンプルですね。
- index.phpを分割して、header.php、content.php、sidebar.php、footer.phpにカット&ペースト。
- index.phpにインクルードタグを挿入する。
関連記事
プレゼン形式で、同様の内容を解説しています。
「index.phpをカスタマイズする」の記事
- 第20回 ギャラリー表示をカスタマイズする
- 第19回 ページ送りを設置する
- 第18回 カテゴリやタグを表示する
- 第17回 記事の表示順、表示数を変更する – 補足
- 第16回 記事の表示順、表示数を変更する
- 第15回 アイキャッチ画像を表示する
- 第14回 抜粋を表示する
- 第13回 パンくずリストを設置する
- 第12回 ページの種類で分岐処理する
- 第11回 カスタム投稿タイプを作成する
- 第10回 カスタム背景を設置する
- 第9回 カスタムヘッダーを設置する
- 第8回 カスタムメニューを設置する
- 第7回 コメントフォームをカスタマイズする
- 第6回 コメントフォームを設置する
- 第5回 サイドバーを設置する
- 第4回 functions.phpとは
- 第3回 テンプレートフォルダ内の画像を使用する
- 第2回 テンプレートパーツ化する << この記事です
- 第1回 HTMLからWPテーマを作成する