【WordPress】特定の親ページを持つ子ページだけ専用のテンプレートを自動で適用させたい

2019年10月31日

specialページの下層ページだけ、特殊な専用固定ページテンプレートを使いたい

つまりはこんな感じ

  • /special/…通常の固定ページテンプレート
  • /special/hogehoge/…専用テンプレート
  • /special/fugafuga/…専用テンプレート(hogehogeの時と同じ)

今回は、管理画面から選択できるカスタムテンプレートを使わず、親のスラッグ情報から自動でテンプレートを振り分けるパターンを試みます。

親ページのスラッグを確認する

※直接の親だけでなく、祖先まで確認する方法は下記記事を確認してください。

【WordPress】特定の固定ページの子孫ページかどうかを判別したい

functions.php

function is_parent_slug() {
	global $post;
	if ($post->post_parent) {
		$post_data = get_post($post->post_parent);
		return $post_data->post_name;
	}
}

 

page.php

<?php if(is_parent_slug('special')) {
    locate_template('template-special.php',true);
}else{
    locate_template('template-normal.php',true);
}
?>

 

これで、親ページがspecialのときはtemplate-special.phpの内容、それ以外の普通のときはtemplate-normal.phpの内容でページを表示することができます。

※local_template()で読み込んでいる個所は、get_template_part()を使っても問題ないです。