WPlogs

WordPressを中心にWeb関連の情報発信。PHP、CakePHP、HTML5、SEOなど。 ※旧名称「SEO人」、旧URL「http://seo.net-luck.com/」

*

「functions.php」で関数「get_template_part」を使用しテンプレートファイルを読込

      2015/05/24

WordPress

出典:http://www.flickr.com/photos/oakleyfamily/4919659112/

前回は、テーマのための関数「functions.php」ファイルで関数「add_shortcode」を使用し、ショートコードタグを追加しました。

前回の記事はこちら⇒「functions.php」で関数「add_shortcode」を使用しショートコードタグを追加

その際、Amazonの商品リンクを取得する関数をショートコードタグとして追加したのだが、生成するHTMLが長いほど、「functions.php」ファイルも長くなり見にくくなる。

そんなときは、生成するHTMLの部分を「テンプレートファイル」化するとすっきりする。

なお、今回のバージョンは以下です。

  • WordPress 3.9

スポンサード リンク

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

まずは、テンプレートファイルを作成する。

テーマのルートフォルダに適当な名前のフォルダを作成し、その中にPHPファイルを作成する。

今回の場合は、Amazonの商品リンクをテンプレートファイルにするので、フォルダ名は「amazon」、ファイル名は「link-xxxx.php」とした。

実際のファイルの中身はこのような感じで、内容はHTMLのみである。

「functions.php」ファイルでテンプレートファイルを読込

テンプレートファイルを読み込むには、「get_template_part」関数を使用する。

get_template_part」関数のパラメータは、以下の通り。

  • 「$slug」…一般テンプレートのスラッグ名
  • 「$name」…特定テンプレートの名前

実際に呼び出されるテンプレートファイルの名前は、「{slug}-{name}.php」のようになる。

もっと具体的に言うと、「get_template_part(‘file’, ‘abc’);」のように呼び出した場合、呼び出されるファイル名は「file-abc.php」というわけ。

そのため、ファイル名は上記のように「link-xxxx.php」とし、「xxxx」の部分をテンプレートファイルの内容で変えて作成すればよい。

で、実際に読み込む関数は以下のようになった。

なお、記事内でショートコードでテンプレートファイルを読み込むには、「ob_start()」、「ob_get_contents()」、「ob_end_clean()」関数を使用し、バッファから値として取り出さないと思ったとおりに表示されないので注意。

これで、「functions.php」関数がすっきりしました。

以上です。

参考サイト

関数リファレンス/get template part – WordPress Codex 日本語版

WordPress: ショートコード内でアクションの実行とテンプレートファイルの読み込み ‹ IBRIDGE | WooCommerce Theme and WordPress Theme Development

 - PHP, WordPress全般