WordPressで作成する固定ページを表示するときのデザインを決めるテンプレートファイルはpage.phpです。ただし、「固定ページの表示=page.phpだけが使われる」わけではありません。以下、事例を紹介しながら固定ページの表示に使われるテンプレートを整理していきます。

page.phpに「本文表示」のコードがない理由

まず、基本的には固定ページを表示するときに使われるのはpage.phpです。

page.phpが存在しない場合はindex.phpが使われますが、ほとんどのテーマにはpage.phpが存在するはずです。

ただし、page.phpの中に「固定ページのタイトルを表示する」や「本文を表示する」というコードが書いてあるテンプレートはほとんどありません。

参考になるのはTwenty Twelveのpage.phpです。

<?php
get_header(); ?>

    <div id="primary" class="site-content">
        <div id="content" role="main">

            <?php while ( have_posts() ) : the_post(); ?>
                <?php get_template_part( 'content', 'page' ); ?>
                <?php comments_template( '', true ); ?>
            <?php endwhile; // end of the loop. ?>

        </div><!-- #content -->
    </div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

page.phpに書かれているのは、これだけです。

固定ページのタイトルや本文を表示する具体的なレイアウトはpage.phpに定義せずにcontent-page.phpに書かれており、8行目の「get_template_part( 'content', 'page' );」で読み込まれます。

つまり、

  • 固定ページのテンプレートはpage.php
  • レイアウトはcontent-page.phpに書かれている

ということです。

具体的なレイアウトが定義されているファイルがcontent-page.phpかどうかはテーマによって異なります。

個別のレイアウトを定義できる「page-スラッグ.php」

固定ページのテンプレートはpage.phpですが、「このページだけは特別なテンプレートを使いたい」こともあります。その場合、page.php以外のテンプレートを使うことができます。

まず、特定のスラッグを持つページに対して「page-スラッグ.php」を使うことができます。たとえば、会社概要のページが「company」というスラッグだった場合、会社概要ページのテンプレートとして「page-company.php」を使うことができます。

つまり、通常のページはpage.phpで表示し、会社概要だけはpage-company.phpで表示するイメージです。

「company」以外も同じです。「page-products.php」を作成しておけば、「products」というスラッグのページで使われます。

スラッグではなく「page-ページID.php」のようなテンプレートを使ってページIDで識別することもできます。たとえば、IDが123のページに対して「page-123.php」というテンプレートを使うことができます。

ただし、「page-ページID.php」より「page-スラッグ.php」が優先されます。

ページ作成時に選べる「カスタムテンプレート」

上記のテンプレートは固定ページを表示するときに自動で適用されるテンプレートですが、ページを作成するときに「このテンプレートを使いたい」と指定することもできます。

テーマによって異なりますが、固定ページの作成時に編集画面の右側にある「テンプレート」メニューから、このページに適用したいテンプレートを選ぶことができます。

作成するページのテンプレートを選べる

作成するページのテンプレートを選べる

作成したいタイプのページを選ぶ感覚です。

この「テンプレート」メニューから選べるテンプレートがカスタムテンプレートです。ファイル名は自由ですが、テンプレートファイルの先頭に「Template Name: 任意の名称」を定義しておけば「テンプレート」メニューから選べるようになり、作成したページに適用されるようになります。もちろん、page.phpやpage-スラッグ.phpよりも優先されます。

<?php
/*
 * Template Name: Sitemap(Slug:sitemap-page)
 */
get_header(); ?>

<!-- [ #container ] -->
<div id="container" class="innerBox">

「Template Name:」を使ったカスタムテンプレートの活用例は、自動表示されるページの作成です。

あらかじめ「カスタムテンプレート1.php」に処理を記述しておけば、「テンプレート」メニューから選ぶだけで本文などに何も入力しなくても、そのページの内容が自動表示される仕組みです。

たとえば、BizVektorというテーマでは「テンプレート」メニューから「サイトマップ」を選ぶことでサイトマップページを自動作成することができます。サイトマップを表示する処理がpage-sitemap-page.phpに記述されており、「テンプレート」メニューから「サイトマップ」を選べば自動でサイトマップが表示されるということです。

スポンサーリンク

こちらもどうぞ

こちらも参考にしてください

関連記事

MySQL

phpMyAdmin

PHPサンプルコード

PHP全般

PHP関数

WordPress

エラーメッセージ

PHPの基礎が身に付いたかチェック!

PHP「直す力」養成ドリル
スポンサーリンク