WordPressのテンプレートファイルの中で、page.phpが固定ページ用のテンプレートになります。
企業サイトを構築すると「トップページと会社概要ページでデザインが異なる」なんてことは良く有りますが、WordPressの場合、このpage.php内で「ページID」か「ページスラッグ」で条件分岐しながら、ページ別にデザインを変更することができます。
「ページID」による条件分岐
固定ページの「ページID」で条件分岐する場合、page.php 内にこんな感じのソースを書いていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php if (have_posts()) : while (have_posts()) : the_post(); //トップページ if ( is_page(1) ) {?> IDが「1」のページデザイン <?php } //会社概要ページ elseif ( is_page(2) ) {?> IDが「2」のページデザイン <?php } //プライバシーポリシーページ elseif ( is_page(3) ) {?> IDが「3」のページデザイン <?php } //上記以外のページ else {?> 上記ID以外のページデザイン <?php } ?> <?php endwhile; endif; ?> |
ただし、この方法だと固定ページのIDを管理画面でわざわざ調べて…という作業が面倒くさいです。
WP Show IDsプラグインを利用すれば、管理画面の固定ページ一覧画面でIDを確認できますので楽と言えば楽になりますが、IDで条件分岐する場合はちゃんとコメントで書いておかないと、後でファイルを見たときにIDとページとの関連性が不明…になることもあります。
「ページスラッグ」による条件分岐
固定ページのページスラッグで条件分岐する場合、page.php 内のソースはこんな感じになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php if (have_posts()) : while (have_posts()) : the_post(); if ( is_page('toppage') ) {?> ページスラッグが「toppage」のページデザイン <?php } elseif ( is_page('company') ) {?> ページスラッグが「company」のページデザイン <?php } elseif ( is_page('privacy') ) {?> ページスラッグが「privacy」のページデザイン <?php } else {?> 上記スラッグ以外のページデザイン <?php } ?> <?php endwhile; endif; ?> |
これだと、よほど変なスラッグ名を付けない限りページが判別しやすいので、個人的にはページスラッグで条件分岐する方が楽だと思います。
※当然、ページスラッグが変わるとここの記述も変わります。
page-○○○.php ファイルを読み込む
補足として、ページによって大きくデザインが異なる場合は、page.phpをコピーしてpage-○○○.phpの名前で個別にテンプレートファイルを持つ方が管理しやすい場合もあります。(※○○○にはページスラッグ名が入ります。)
その場合、page.php 内ではこんな感じで条件分岐していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php if (have_posts()) : while (have_posts()) : the_post(); if ( is_page('toppage') ) {?> <?php include(TEMPLATEPATH . '/page-toppage.php'); ?> <?php } elseif ( is_page('company') ) {?> <?php include(TEMPLATEPATH . '/page-company.php'); ?> <?php } elseif ( is_page('privacy') ) {?> <?php include(TEMPLATEPATH . '/page-privacy.php'); ?> <?php } else {?> <?php the_content(); ?> <?php } ?> <?php endwhile; endif; ?> |
コメント