カスタムページテンプレートは、ページ編集画面で選択できるテンプレートのことです。Snow Monkey には右サイドバー、フル幅、1カラム(スリム)などいくつかのテンプレートが用意されていますが、オリジナルのカスタムページテンプレートを追加することもできます。
1. My Snow Monkey プラグインを用意する
下記のページを参考に My Snow Monkey をダウンロード/インストールしてください。
2. My Snow Monkey の中でテンプレートを追加できるようにする
下記の記事を参考に、snow_monkey_template_part_root_hierarchy
フックを使って My Snow Monkey の中にテンプレートルートを追加してください。
2. カスタムページテンプレート用のディレクトリを作成する
用意した my-snow-monkey/override
の中に、カスタムページテンプレート用のディレクトリを作成します。page-templates
という名前でディレクトリを作成してください。
my-snow-monkey
override
page-templates
3. カスタムページテンプレート用のファイルを作成する
my-snow-monkey/override/page-templates
の中にカスタムページテンプレート用の PHP ファイルを作成します。このとき、ファイル名は snow-monkey/page-templates
の中に無いものにしてください(同じ名前だとカスタムページテンプレートの「追加」ではなく「上書き」になります)。ここでは、my-one-column-slim.php
という名前のファイルをつくる想定とします。
my-snow-monkey
override
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/override/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/override/templates/layout/wrapper
の中にファイルを追加する必要があります。ここでは my-one-column-slim
というレイアウトファイルを使用する想定とします。
my-snow-monkey
override
page-templates
my-one-column-slim.php
templates
layout
wrapper
my-one-column-slim.php
レイアウトファイルをゼロからつくるのは結構大変なので、Snow Monkey のレイアウトファイルの中からベースにしたいものを選んでコピーし、それを編集するという方法をオススメします。
そして、my-snow-monkey/override/templates/layout/wrapper/my-one-column-slim.php
を呼び出すように my-snow-monkey/override/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/override/page-templates/my-one-column-slim.php
に記述した Controller::render( 'content', get_post_type() );
というコードは、snow-monkey/templates/override/content-<post_type>.php
というレイアウトファイルを使用しますよ、という命令になります。
もし snow-monkey/templates/override/content-<post_type>.php
ではなく、オリジナルのビューにしたい場合は、my-snow-monkey/override/templates/view
の中にファイルを追加する必要があります。ここでは my-content
というレイアウトファイルを使用する想定とします。
my-snow-monkey
override
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/override/templates/view/my-content-<post_type>.php
を呼び出すように my-snow-monkey/override/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() ); // ← ここ