表示中のページの子ページのみを表示

情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・PHPのバージョン等によって動作しない場合もあります。

ページリストで表示しているページが親ページなら、その子ページリスト、表示しているページが子ページなら、その親に属する子ページリストのみ開く。

<?php
global $post;
if ( is_page() AND $post->post_parent ) {
		$pID = $post->post_parent;
} else {
		$pID = $post->ID;
}
?>
<style type="text/css">
    ul.children {display:none;}
    li.page-item-<?php echo $pID; ?> ul.children {display:block;}
</style>
<?php wp_list_pages('~'); ?>

親ページヘのリンクと、その子ページリストのみを表示

<?php
global $post;
if ( is_page() AND $post->post_parent ) {
		$pID = $post->post_parent;
} else {
		$pID = $post->ID;
}
 $page = get_page($pID); ?>
<li><a href="<?php echo $page->guid; ?>" title="<?php echo $page->post_title; ?>"><?php echo $page->post_title; ?></a>
<ul>
  <?php wp_list_pages('title_li=&amp;amp;amp;sort_column=menu_order&amp;amp;amp;child_of=' .$pID); ?>
</ul>
</li>

孫ページまである時

<?php
global $post;
if (!$post->post_parent ) { $pID = $post->ID; }
else {
$ancestor = array_pop( get_post_ancestors( $post->ID ) ); $pID = $ancestor;
}
 $page = get_page($pID); ?>

ページリストをすべて表示・表示中のページに関連する子ページリストのみを表示

<?php
$IDOutsideLoop = $post->ID;
global $post;
if (!$post->post_parent ) { $pID = $post->ID; }
else {
$ancestor = array_pop( get_post_ancestors( $post->ID ) ); $pID = $ancestor;
}
 $page = get_page($pID); ?>
<ul><?php
	$mypages = get_pages( array( 'parent' => '0', 'sort_column' => 'menu_order', 'sort_order' => 'desc' ) );
	foreach( $mypages as $page ) {		
	?>
		<li<?php if ($IDOutsideLoop == $page->ID) { ?> class="current"<?php } ?>><a href="<?php echo get_page_link( $page->ID ); ?>"><?php echo $page->post_title; ?></a>
<?php if ($pID == $page->ID) { ?><ul>
  <?php wp_list_pages('title_li=&amp;sort_column=menu_order&amp;child_of=' .$pID); ?>
</ul>
<?php } ?>
</li>
<?php } ?>
</ul>

コメントは受け付けていません。