テーマ 固定ページ

#0015 - WordPressの固定ページ用テンプレートを用意する

WordPressのオリジナルテーマで固定ページを表示してみよう では、index.phpを用いて管理画面で編集した固定ページを表示する方法を紹介しました。

WordPressには、固定ページ専用のテンプレート page.php をがあります。
今回は、page.php の使い方について紹介します。

固定ページ専用のテンプレート page.php

早速ですが、page.php を作成してみましょう。
VSCode から index.php と同じフォルダに page.php を作成します。


内容は、index.php と全く同じです。
index.phpとpage.phpの区別がつくよう、ページの終わりに「page.phpです」と記載しておきます。

<!DOCTYPE html>
<html>
<head>
	<title><?php the_title();?></title>
	<link rel="stylesheet" type="text/css" href="<?php echo get_template_directory_uri();?>'/style.css'">
</head>
<body>
	<h1><?php the_title();?></h1>
	<?php the_content();?>
	<p>page.phpです</p>
</body>
</html>

http://test.local にアクセスしてみましょう。
最終行に「page.phpです」と表示されてます。

すなわち、index.php ではなく page.php がテンプレートとなって「固定ページのタイトル」ページが表示されたことが確認できました。

さまざまな page.php

固定ページが page.php テンプレート で表示されることが、わかったと思います。
この page.php には、複数のパターンがありますので紹介します。

検証用に固定ページの準備

page.php のパターンを紹介する前に、検証を容易にするため固定ページを3つ追加します。
ここでは固定ページに「検証①」「検証②」「検証③」の3ページを追加しました。

WordPressでは、固定ページに ページIDスラッグ が付きます。
ページIDは、固定ページ編集画面のURLで確認できます。?post=に続く数字がページIDです。
スラッグは、右側の固定ページ概要にあるURLとなります。

タイトル:検証①
ページID:17
スラッグ:test1

タイトル:検証②
ページID:19
スラッグ:test2

タイトル:検証③
ページID:21
スラッグ:test3

page-ページID.php と page-スラッグ.php

page.php には、他に3種類のテンプレートがあります。page.phppage-ページID.phppage-スラッグ.php です。

page.php

すべての固定ページで適用されるテンプレートです。

page-ページID.php

特定の固定ページだけに適用されるテンプレートです。
例えば、ページID「19」の固定ページだけに適用するテンプレートは、page-19.php となります。

page-スラッグ.php

特定の固定ページだけに適用されるテンプレートです。
例えば、スラッグ「test3」の固定ページだけに適用するテンプレートは、page-test3.php となります。

固定ページにおけるテンプレートの優先順位

WordPressの固定ページでは、主に3種類のpage.phpテンプレートがあり、次の優先順位でテンプレートが適用されます。

これまでindex.php で固定ページが表示できていたのは、page.phpが存在しなかったからです。

優先度テンプレート
1カスタムテンプレート.php
2page-スラッグ.php
3page-ページID.php
4page.php
(5)singular.php
(6)index.php

優先順位の確認

次のように固定ページのテンプレートを用意した際、検証①、検証②、検証③は、どのテンプレートが適用されるか考えてみてください。

  • c:¥
    • User
      • ユーザー名
        • Documents
          • test
            • app
              • public
                • wp-admin

                  ここにはWordPressの管理画面に関するファイルが保存されています。このフォルダ内のファイルは変更・削除しないでください。

                • wp-content
                  • languages

                    ここにはWordPressの多言語対応時の翻訳情報が保存されています。このフォルダ内のファイルは変更・削除しないでください。

                  • plugins

                    ここにはWordPressのプラグインが保存されています。このフォルダ内のファイルは変更・削除しないでください。

                  • themes
                    • mytheme
                      • index.php
                      • page.php
                      • page-19.php
                      • page-21.php
                      • page-test3.php
                      • screenshot.png
                      • style.css
                    • twentytwentyfour
                    • twentytwentythree
                    • twentytwentytwo
                  • upgrade

                    ここにはWordPressのアップデート情報が保存されています。このフォルダ内のファイルは変更・削除しないでください。

                  • uploads

                    ここにはWordPressの管理画面からアップロードしたメディア(画像・動画など)が保存されています。このフォルダ内のファイルは変更・削除しないでください。

                • wp-includes

                  ここにはWordPressのシステムファイルが保存されています。このフォルダ内のファイルは変更・削除しないでください。

              • sql

                ここにはLocal WPのシステムファイルが保存されています。このフォルダ内のファイルは変更・削除しないでください。

            • conf

              ここにはLocal WPのシステムファイルが保存されています。このフォルダ内のファイルは変更・削除しないでください。

            • logs

              ここにはLocal WPのシステムファイルが保存されています。このフォルダ内のファイルは変更・削除しないでください。

http://test.local/test1

page-17.php および page-test1.php が存在しない為、page.php が適用されます。

http://test.local/test2

page-test2.php が存在しない為、page-19.php が適用されます。

http://test.local/test3

page-21.php と page-test3.php の両方存在するが、優先順位の高いpage-test3.phpが適用されます。

index.php が表示されるのはバグです!

テンプレートの優先順でも紹介したように、各page.phpが存在しないときにindex.phpが固定ページのテンプレートとして採用されます。
すなわち、index.phpが表示されたということは、page.phpを作り忘れていると言うことになります。

これは、別の見方をすると「予期せぬ動き」ともとらえることができます。
index.phpが表示されてしまったと言うことは、「どこかにバグがある」と認識した方が良いでしょう。

トップページ専用テンプレート

固定ページをトップページに設定した場合、トップページ専用テンプレートを適用することができます。
そのテンプレートが front-page.php です。

front-page.php の内容は page.phpと同様で問題ありませんが、一般的には、トップページに凝ったデザインを適用し、以降のページには共通デザインを適用すると思います。

実践的なテンプレートの使い方

先ほど述べたように、トップページ専用テンプレート front-page.php と 以降のページに適用する共通デザインのテンプレート page.php の2つでウェブサイトを構築することが多いです。
ウェブサイトの構成によっては、お問い合わせフォーム専用の page-contact.php を作ったり、お知らせ一覧を表示する page-information.php も用意します。

実際にウェブサイトを構築する場合は、front-page.php と page.php の2つを用意して、必要に応じてpage-スラッグ.php を作ると覚えておくとよいでしょう。

まとめ

今回は、固定ページ専用テンプレート page.php について紹介しました。

WordPressによるウェブサイトの構築において、page.php は基本中の基本であり、page.php を作ることがオリジナルテーマを作るうえで最も重要なことなので、しっかり把握しましょう。

  • この記事を書いた人

UOCN

IT業界29年の現役フリーランスエンジニア。 一部上場企業の大規模システムから個人商店のウェブサイトまで50を超えるプロジェクトに参画。 近年は、WordPressを採用したウェブサイト製作を中心に活動中。

-テーマ, 固定ページ
-, , , , , ,