静的ビューテンプレート機能 – Snow Monkey カスタマイズ

本記事では、Snow Monkey テーマの機能の1つ「静的ビューテンプレート機能」について解説します。

静的ビューテンプレート機能について

先日、Snow Monkey 開発者のキタジマタカシ氏が Twitter 上で次のようなツイートをされていました。

ただ、一応 Snow Monkey には静的ビューテンプレート機能というものがあって、例えば http://example.com/about/  なら、/templates/static/about.php というファイルをつくればビュー(コンテンツ)部分だけテンプレート化できるという機能も用意しています(受託ではやはりあると便利…)

キタジマタカシさんのツイートより抜粋

このことから、静的ビューテンプレート機能とは、ビュー部分をテンプレート化できる機能ということが解ります。

静的ビューテンプレート機能は、何が便利なのか

コンテンツの部分だけをブロックなどを使用して書くのではなく、用意したPHPで記述することが可能なため、複雑な処理をコンテンツ部分で行いたい場合などに便利です。

実際に試してみよう

ツイートされた内容と同様に templates/static/about.php と言うファイルを用意して /about にアクセスすることで試してみましょう。

本記事では、子テーマを使わずに Snow Monkey 公式サイトで用意されているカスタマイズ用プラグインの雛形「My Snow Monkey プラグイン」を使用する方法をとります。

テネーブル

まずは、テンプレートファイルを子テーマではなく、プラグイン側で使用できるようにする為に snow_monkey_template_part_root_hierarchy フックを使用し、テンプレートのルートディレクトリの追加を行います。

my-snow-monkey.php に次のコードを記述しましょう。既に記述されている場合は、追加で記述しないでください。

add_filter(
	'snow_monkey_template_part_root_hierarchy',
	function( $hierarchy, $slug, $name, $vars ) {
		$hierarchy[] = untrailingslashit( plugin_dir_path( __FILE__ ) ) . '/template_root';
		return $hierarchy;
	},
	1,
	4
);
ルミェール

次に、テンプレートファイル を 次のディレクトリ構造一覧を参考に用意してみてね!
(※ 枠だけのアイコンの部分が、新規で用意するディレクトリとファイルだよ)

my-snow-monkey

my-snow-monkey.php

template_root

templates

static

about.php

テネーブル

それでは、試しに template_root/templates/static/about.php を次のように記述してみましょう。

<?php
echo 'This is Test Message';
echo __FILE__;
ルミェール

記述ができたらファイル保存を行い、動作テストをしているサイトの /about (例:http://サイトドメイン/about ) へブラウザでアクセスしてみよう!

テネーブル

ページが見つからないと言われた場合は、/about のURLになるように投稿、または固定ページを生成しましょう。 /about にパーマリンクのある記事がなければ、 404 Page Not Found になってしまいます。

無事にアクセスされた場合は、記事投稿画面で記入しているブロックなどはすべて表示されずに、

This is Test Message/wp-content/plugins/my-snow-monkey/template_root/templates/static/about.php

と言った about.php 内で記述した This is Test Message__FILE__ を処理したパス名が、ブラウザ画面に表示されているはずです。

テネーブル

/templates/static 下に php ファイルを生成した場合は、すべてそのファイルを静的ビューテンプレートとして読み込み処理されます。その為、今回記述している about.php/about にアクセスした際に静的ビューテンプレートとして読み込まれ、表示結果になっているんです。

ルミェール

管理画面で編集している投稿内容より、静的ビューテンプレートとして用意している php の記述が優先されるんだ。

もし、お仕事で使う場合などは該当の投稿内容に「この投稿は静的ビューテンプレート機能で書いていますので。コンテンツ部分は *****.php に記述されている内容になります」などにして、投稿ステータスも「下書き」にしておくと解りやすくなるよ。

補足

ケミ

静的ビューテンプレート機能は「このページにはシステム的な PHP で処理した内容を表示したい」と言う場合などに重宝します。今回は echo で文字列表示をしているだけでしたが、システム的な処理を PHP で書くことでシステムの結果表示も可能になります。複雑なページ表示がある場合、静的ビューテンプレート機能も使うのも検討してみてください。

この記事の筆者

Kmix39(ケミ)

電子の妖精。当ウェブサイトの記事制作などを行なっています。
金融・不動産・医療・教育などの数々の業種のシステム開発を経験を積み、スマートフォンアプリケーションと WordPress などのウェブアプリケーションを日々勉強中。