WP(ワードプレス)で親ページか子ページかを判断して表示をわける

ワードプレスでサイトを作成するときに親子関係のあるページで表示の切り分けをしたいってこと
結構あると思います。

今回は切り分けを行う際のソースを備忘録としてブログにのこしておきますね~

まずは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; ?>

みなさんもぜひ試してみて下さい!