カスタムページテンプレートの追加方法

カスタムページテンプレートは、ページ編集画面で選択できるテンプレートのことです。Snow Monkey には右サイドバー、フル幅、1カラム(スリム)などいくつかのテンプレートが用意されていますが、オリジナルのカスタムページテンプレートを追加することもできます。

1. My Snow Monkey プラグインを用意する

下記のページを参考に My Snow Monkey をダウンロード/インストールしてください。

2. My Snow Monkey の中でテンプレートを追加できるようにする

my-snow-monkey/my-snow-monkey.php に次のコードをコピペしてください。

add_filter(
	'snow_monkey_template_part_root_hierarchy',
	function( $hierarchy ) {
		$hierarchy[] = untrailingslashit( __DIR__ ) . '/view';
		return $hierarchy;
	}
);

コピペすると、子テーマのようにテンプレートの上書きをおこなえるようになります。子テーマの場合は子テーマディレクトリの直下に置いたファイルが上書き対象になりますが、上記のコードの場合だと、my-snow-monkey/view の中に置いたファイルが上書き対象になります。

2. カスタムページテンプレート用のディレクトリを作成する

用意した my-snow-monkey/view の中に、カスタムページテンプレート用のディレクトリを作成します。page-templates という名前でディレクトリを作成してください。

my-snow-monkey

view

page-templates

3. カスタムページテンプレート用のファイルを作成する

my-snow-monkey/view/page-templates の中にカスタムページテンプレート用の PHP ファイルを作成します。このとき、ファイル名は snow-monkey/page-templates の中に無いものにしてください(同じ名前だとカスタムページテンプレートの「追加」ではなく「上書き」になります)。ここでは、my-one-column-slim.php という名前のファイルをつくる想定とします。

my-snow-monkey

view

page-templates

my-one-column-slim.php

そして、my-one-column-slim.php に、下記のコードを記述してみてください。

<?php
/**
 * Template Name: My One Column Slim
 * Template Post Type: post, page
 */

use Framework\Controller\Controller;

Controller::layout( 'one-column-slim' );
Controller::render( 'content', get_post_type() );

ここまでできたら、ページ編集画面で My One Column Slim というテンプレートが選択できるようになっているか確認してください。

3-1. レイアウト(大枠)用のファイルを作成する

もしレイアウト(大枠)部分は既存の1カラム(スリム)と同じものを流用する場合はこのステップは飛ばしてください。

my-snow-monkey/view/page-templates/my-one-column-slim.php に記述した Controller::layout( 'one-column-slim' ); というコードは、snow-monkey/templates/layout/wrapper/one-column-slim.php というレイアウトファイルを使用しますよ、という命令になります。

もし snow-monkey/templates/layout/wrapper/one-column-slim.php ではなく、オリジナルのレイアウトにしたい場合は、my-snow-monkey/view/templates/layout/wrapper の中にファイルを追加する必要があります。ここでは my-one-column-slim というレイアウトファイルを使用する想定とします。

my-snow-monkey

view

page-templates

my-one-column-slim.php

templates

layout

wrapper

my-column-slim.php

レイアウトファイルをゼロからつくるのは結構大変なので、Snow Monkey のレイアウトファイルの中からベースにしたいものを選んでコピーし、それを編集するという方法をオススメします。

そして、my-snow-monkey/view/templates/layout/wrapper/my-one-column-slim.php を呼び出すように my-snow-monkey/view/page-templates/my-one-column-slim.php のコードを変更しましょう。

<?php
/**
 * Template Name: My One Column Slim
 * Template Post Type: post, page
 */

use Framework\Controller\Controller;

Controller::layout( 'my-one-column-slim' ); // ← ここ
Controller::render( 'content', get_post_type() );

3-2. ビュー(コンテンツ部分)用のファイルを作成する

もしビュー(コンテンツ)部分は既存のものを流用する場合はこのステップは飛ばしてください。

my-snow-monkey/view/page-templates/my-one-column-slim.php に記述した Controller::render( 'content', get_post_type() ); というコードは、snow-monkey/templates/view/content-<post_type>.php というレイアウトファイルを使用しますよ、という命令になります。

もし snow-monkey/templates/view/content-<post_type>.php ではなく、オリジナルのビューにしたい場合は、my-snow-monkey/view/templates/view の中にファイルを追加する必要があります。ここでは my-content というレイアウトファイルを使用する想定とします。

my-snow-monkey

view

page-templates

my-one-column-slim.php

templates

view

my-content.php ← 固定ページでも投稿でも同じビューファイルで良い場合はこれだけで OK

my-content-post.php ← 投稿用のビュー(任意)

my-content-page.php ← 固定ページ用のビュー(任意)

ビューファイルをゼロからつくるのは結構大変なので、Snow Monkey のビューファイルの中からベースにしたいものを選んでコピーし、それを編集するという方法をオススメします。

そして、my-snow-monkey/view/templates/view/my-content-<post_type>.php を呼び出すように my-snow-monkey/view/page-templates/my-one-column-slim.php のコードを変更しましょう。

<?php
/**
 * Template Name: My One Column Slim
 * Template Post Type: post, page
 */

use Framework\Controller\Controller;

Controller::layout( 'one-column-slim' );
Controller::render( 'my-content', get_post_type() ); // ← ここ

Snow Monkey オンラインコミュニティ

Snow Monkey をより良いテーマにするために、今後の機能開発等について情報共有したりディスカッションをしたりする場所です。より多くのユーザーの交流があったほうがより良いプロダクトに育っていくと思いますので、ぜひご参加ください!