WordPressの固定ページでオリジナルのテンプレートを自由に選択できるようにする方法

本サイトはアフィリエイト広告を利用しています。

WordPressでは固定ページ用のテンプレートを用意しておけばそれぞれのページで自由にテンプレートを選択することができるので、その方法を書きたいと思います。

スポンサーリンク

基本はpage.php

固定ページが表示される時、どのファイルが使われるのかといえば、page.phpが使用されます。
どのテーマでも必ずpage.phpがあると思います。
基本的にはこのファイルが使用されています。
もしも「page-スラッグ名.php」や「page-ID.php」があれば、そちらが優先されます。
とはいえ通常これらのファイルがテーマの中にデフォルトで入っていることはほとんどないかなと思います。
いちお知識として、優先順位は、
page-スラッグ名.php > page-ID.php > page.php

となります。

page.phpを複製してテンプレートを作成

まずはpage.phpを複製して新しいテンプレートを作成する方法です。
現状、固定ページを開くと、

となっており、テンプレートが特に選べるような状態にはなっていないと思います。

テーマによって、すでにオリジナルのテンプレートが用意してあれば、

のようにプルダウンで選べるようになっている場合もあると思います。
その際は、それを複製して作ればよいかと思います。

とりあえず今回は、page.phpを元に作成します。どのテーマでもpage.phpはだいたいあると思いますので。

テーマはなんでもよいのですが、いったんWordPressにデフォルトで入っている「Twenty Seventeen」を使用してみます。
「Twenty Seventeen」のpage.phpを開き、その一番上に、下記を追記し別名保存します。
必要なことは、これだけです。

<?php
/*
Template Name: 固定ページの新規テンプレート名
*/
?>

Template Name: の部分は固定ページで選ぶ時の名前になりますので、自分で分かりやすい名前にすればよいと思います。
例えばお問い合わせフォームで使用したいなら、「お問い合わせフォーム用テンプレート」とか。

「Twenty Seventeen」のpage.phpを開き、別名にします。page.phpで保存をしてはだめです。当たり前ですが、、、
ファイル名は、自由です。例えばお問い合わせ用なら、「contactpage.php」とかでもよいと思います。

<?php
/*
Template Name: お問い合わせフォーム用テンプレート
*/
?>
<?php
/**
 * The template for displaying all pages
 *
 * This is the template that displays all pages by default.
 * Please note that this is the WordPress construct of pages
 * and that other 'pages' on your WordPress site may use a
 * different template.
 *
 * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
 *
 * @package WordPress
 * @subpackage Twenty_Seventeen
 * @since 1.0
 * @version 1.0
 */

get_header(); ?>

こんな感じで、「contactpage.php」としてテーマの中のフォルダ、page.phpとかと同じ階層に保存します。

さっそくアップして、固定ページを確認します。

デフォルトと、「お問い合わせフォーム用テンプレート」が選択できるようになりました。

page-ID.phpでテンプレートを作成

最初に優先順位として
page-スラッグ名.php > page-ID.php > page.php

と書きました。
じゃあ「page-スラッグ名.php」と「page-ID.php」は何?と思われる方もいるかと思います。
page-IDはそのままそれぞれの固定ページに個々に割り振られるIDです。

固定ページのリストを開き、タイトルの上にマウスを持ってくると、下のほうにアドレスが表示されると思います。

この画像の場合は、プライバシーポリシーのページのIDが135です。
なので、もしこのプライバシーポリシーだけにオリジナルのテンプレートを適用したい場合は、
page-135.phpというファイル名で、page.phpを複製して、オリジナルのテンプレートを作れば適用されます。
page.phpのところで書いたTemplate Name: は必要ありません。
この場合はIDなので、同じIDのたったひとつだけのファイルにオリジナルのテンプレートを適用したい場合に使用されるものになります。
この場合では、IDが135番目のもの、プライバシーポリシーだけに適用されるオリジナルのテンプレートとなります。

page-スラッグ名.phpでテンプレートを作成

優先順位一番目の「page-スラッグ名.php」ですが、
スラッグを利用して、オリジナルのテンプレートを適用させる方法もあります。
固定ページのスラッグは、デフォルトだと表示されていない場合もあると思います。
固定ページを開き、右上の「表示オプション」を開きます。

ボックスが出てくると思います。

「スラッグ」にチェックを入れます。

下のほうを見ると、「スラッグ」の枠が表示されています。

この場合は「privacypolicy」になっておりますので、「page-privacypolicy.php」を作れば、プライバシーポリシーにオリジナルのテンプレートを適用させることができます。

コメントをどうぞ