Wordpress テンプレートパーツを作成

2020-06-11

ワードプレスには、header.phpやfooter.phpやsidebar.phpなど、既に用意されているテンプレートパーツがありますが、今回は、自前でテンプレートパーツを用意して、使っていこうと思います。
そこで、活用する関数が get_template_part() になります。
これは、引数を指定することにより、header.phpやsidebar.phpと同じように、テンプレート化したファイルをテーマの中に読み込んでくれる関数です。

テンプレートファイルの作成

まず、テンプレート化して、読み込むためのファイルを作成して、FTP等でアップロードします。
ファイル名は、特に指定はありませんが、管理しやすいような形式が良いと思います。
例えば、include.phpとし、これを任意のテーマフォルダにアップします。
中身は、空のままでも大丈夫です。
すると、管理画面からテーマエディターを開いた時に、右側にファイルが追加されているのが、確認できます。
「テーマヘッダー(header.php)」や「テーマフッター(footer.php)」の様に、ファイルの説明を追加したい場合、The template Nameを追記します。

と記述すると、「テンプレートパーツ固定ページテンプレート(include.php)」と表記が追加されます。


テンプレートファイルの読み込み

index.phpやpage.phpなどのテンプレートファイルの読み込ませたい箇所に、下記を記載すると、include.phpの中身を出力させることができます。

phpの拡張子は記述しなくても大丈夫です。
ファイル名の「include」は$slugという扱いになります。

これで、テンプレートパーツの作成は完了です。
ちなみに、The template Name:を記述すると、固定(投稿)ページのテンプレート扱いになるので、固定ページの投稿画面でテンプレート選択できるようになってしまいますので、ご注意ください。


補足

管理のしやすさを考えた時に、テンプレートパーツのファイルを複数用意して、ページによって読み込みファイルを変更する場合などは、下記のようにするとわかりやすいかと思います。
まず、テンプレートファイルを下記のようにします。

  • include-parts1.php
  • include-parts2.php
  • include-parts3.php

読み込ませたい箇所にはそれぞれ、下記のように記述します。

というように、「-(ハイフン)」を「,(カンマ)」で区切って、記述します。これは、$slug,$nameという記述になっています。


または、フォルダに入れて、まとめておきたい場合などは、テーマフォルダの直下に下記のようにアップロードします。

  • inc/include-parts1.php
  • inc/include-parts2.php

と記述します。
フォルダにまとめる場合は、$slugに当たる部分が必要になります。
inc/parts1.php にして、 get_template_part(‘inc/’,’parts1′); というような記述をしても、読み込まれません。


このような感じで、ファイルをまとめたりして、管理しやすいようにできればと思いますが、テンプレート化しすぎて、逆に複雑化にならないようにご注意ください。
過去にいくつか他人が作成したテーマで作成者しかわからないような構造になってるサイトを見たことがあります。。。