ワードプレスでサイトを作成するときに親子関係のあるページで表示の切り分けをしたいってこと
結構あると思います。
今回は切り分けを行う際のソースを備忘録としてブログにのこしておきますね~
まずはfunction.phpに以下のソースを記述します。
そのままコピペで問題ないです。
/* ------------------------------------------------------------- */
//
// 子ページかどうかを判定する関数
//
/* ------------------------------------------------------------- */
function is_child( $slug = "" ) {
if(is_singular())://投稿ページのとき(固定ページ含)
global $post;
if ( $post->post_parent ) {//現在のページに親がいる場合
$post_data = get_post($post->post_parent);//親ページの取得
if($slug != "") {//$slugが空じゃないとき
if(is_array($slug)) {//$slugが配列のとき
for($i = 0 ; $i <= count($slug); $i++) {
if($slug[$i] == $post_data->post_name || $slug[$i] == $post_data->ID || $slug[$i] == $post_data->post_title) {//$slugの中のどれかが親ページのスラッグ、ID、投稿タイトルと同じのとき
return true;
}
}
} elseif($slug == $post_data->post_name || $slug == $post_data->ID || $slug == $post_data->post_title) {//$slugが配列ではなく、$slugが親ページのスラッグ、ID、投稿タイトルと同じのとき
return true;
} else {
return false;
}
} else {//親ページは存在するけど$slugが空のとき
return true;
}
}else {//親ページがいない
return false;
}
endif;
}
実際に吐き出すテンプレートには以下のような記載をします。
<?php if(is_child()): ?> //ここに子ページの場合の記述 <?php else:?> //ここに親ページの場合の記述 <?php endif; ?>
他にも以下のような書き方もできます。
<?php if(is_page(array('service','company')) || is_child(array('service','company'))): ?>
//親ページのスラッグがserviceまたはcompany、または、子ページの親のスラッグがserviceまたはcompanyの場合の処理
<?php else:?>
//それ以外
<?php endif; ?>
みなさんもぜひ試してみて下さい!