WPで通常のWEBサイトを作ろうと思ったとき、案外こんがらがるのが固定ページの階層です。
画像のような固定ページ階層の時、「自分」からみて、先祖、親、子、孫と取得する方法をまとめます。

page.phpやindex.phpなどで以下を記述し、自分に当たるページをブラウザで見ると値がわかります。

直上の親IDの取得

<?php
  echo $post->post_parent;//親のID
?>
page.php
ソースコード装飾ならGoogle code prettify

先祖全部

<?php
//親、最上の親のID配列
  print_r($post->ancestors);
  print_r(get_post_ancestors($post->ID));
?>
page.php
ソースコード装飾ならGoogle code prettify

最上の親のみ

<?php 
//最上の親のID
echo $post->ancestors[count($post->ancestors) - 1];
echo get_post_ancestors($post->ID)[count($post->ancestors) - 1];
echo array_reverse($post->ancestors)[0];
?>
page.php
ソースコード装飾ならGoogle code prettify

配列の順番は最上の親が最後になります。array_reverseで逆転されるかcount-1で最後の配列を取れます。

直下の子のみ

<?php
print_r(get_children(array('post_parent' => $post->ID)));//子1、子2の配列オブジェクト
?>
page.php
ソースコード装飾ならGoogle code prettify

子孫全部

<?php
wp_list_pages(array('child_of'=>$post->ID));//HTMLでli>ul>li>aを含むページの一覧
?>
page
ソースコード装飾ならGoogle code prettify

パラメータ

$args = array(
	'authors'      => '',
	'child_of'     => 0,
	'date_format'  => get_option('date_format'),
	'depth'        => 0,
	'echo'         => 1,
	'exclude'      => '',
	'include'      => '',
	'link_after'   => '',
	'link_before'  => '',
	'post_type'    => 'page',
	'post_status'  => 'publish',
	'show_date'    => '',
	'sort_column'  => 'menu_order, post_title',
	'sort_order'   => '',
	'title_li'     => __('Pages'),
	'walker'       => new Walker_Page
);
wp_list_pages($args);
ソースコード装飾ならGoogle code prettify