企業サイト等を作るとき、サブページにナビゲーションに用意することって結構あると思います。サイドバーあたりに。
たとえば
[html]
<nav class="sideNav">
<h2><a href="#">会社情報</a></h2>
<ul>
<li><a href="#">会社概要</a></li>
<li><a href="#">事業内容</a></li>
<li><a href="#">社長挨拶</a></li>
</ul>
</nav>
[/html]
みたいな感じの。
それのWordPressでの実装です。
[php]
<nav class="sideNav">
<?php
if(is_page()){
$rootId = array_pop(get_post_ancestors( $id ));
if(!$rootId){
$rootId = $id;
}
?>
<h2><a href="<?php get_permalink($rootId);?>"><?php echo get_the_title($rootId);?></a></h2>
<ul>
<?php wp_list_pages("title_li=&child_of=$rootId" );?>
</ul>
<?php
}else {
?>
<h2><a href="/news">ニュース</a></h2>
<ul>
<?php wp_get_archives();?>
</ul>
<?php
}
?>
</nav>
[/php]
get_post_ancestors( $id )親ページのリストが配列で出るのですが、最後の要素が一番上の階層のページなので、それをarray_popで持って来ます。
wp_list_pagesで取得したIDの子孫のページだけ吐き出すようにしています。