• RSS

[WP]WordPressの固定ページを、ページIDとページスラッグで振分処理する方法

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

WordPressのテンプレートファイルの中で、page.php が固定ページ用のテンプレートになります。

企業サイトを構築すると「トップページと会社概要ページでデザインが異なる」なんてことは良く有りますが、WordPressの場合、このpage.php 内で「ページID」か「ページスラッグ」で条件分岐しながら、ページ別にデザインを変更することができます。

「ページID」による条件分岐

固定ページの「ページID」で条件分岐する場合、page.php 内にこんな感じのソースを書いていきます。
<?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 内のソースはこんな感じになります。
<?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 内ではこんな感じで条件分岐していきます。
<?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; ?>



  • このエントリーをはてなブックマークに追加
  • follow us in feedly

コメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください