親か子かの判定

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

固定ページの場合、表示しているページが親でも子でも、親ページを先頭に子ページ一覧を表示。

<?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); $page_data = get_page($pID); ?>
<ul>
<li<?php if (is_page($pID)) { echo ' class="current_page_item"'; } ?>><a href="<?php echo get_permalink($pID); ?>"><?php echo $page_data->post_title; ?></a></li>
  <?php wp_list_pages('title_li=&sort_column=menu_order&child_of=' .$pID); ?>
</ul>

カテゴリーページの場合も親カテゴリーを先頭に子カテゴリー一覧を表示。

<?php
$ccat = get_query_var('cat'); $pcat = $wpdb->get_var("SELECT parent FROM ".$wpdb->prefix."term_taxonomy WHERE term_id = $ccat"); if ($pcat == 0) { ?>
<ul>
<li class="current_page_item"><a href="<?php echo get_category_link($ccat); ?>"><?php single_cat_title(); ?></a></li>
<?php wp_list_categories('title_li=&show_option_none=&hide_empty=0&child_of='.$ccat); ?>
</ul>
<?php } elseif ($pcat > 0) { ?>
<ul>
<li><a href="<?php echo get_category_link($pcat); ?>"><?php echo get_cat_name($pcat); ?></a></li>
<?php wp_list_categories('title_li=&show_option_none=&hide_empty=0&child_of='.$pcat); ?>
</ul><?php } ?>

投稿ページの場合、一番下のカテゴリーを取得して、それが親でも子でも親カテゴリーを先頭に子カテゴリー一覧を表示。
子カテゴリーに含まれる場合は current_category=’.$ccat->cat_ID でカレントクラスを付ける。

<?php $cats = get_the_category(); $ccat = ''; foreach ( $cats as $cat ) { if ( ! $ccat || cat_is_ancestor_of( $ccat, $cat ) ) { $ccat = $cat; } } $pcat = $ccat->category_parent; if ($ccat->category_parent) { ?>
<ul>
<li><a href="<?php echo get_category_link($pcat); ?>"><?php echo get_cat_name($pcat); ?></a></li>
<?php wp_list_categories('title_li=&show_option_none=&hide_empty=0&child_of='.$pcat.'&current_category='.$ccat->cat_ID); ?>
</ul><?php } else { ?>
<ul>
<li class="current-cat"><a href="<?php echo get_category_link($ccat); ?>"><?php echo get_cat_name($ccat->cat_ID); ?></a></li>
<?php wp_list_categories('title_li=&show_option_none=&hide_empty=0&child_of='.$ccat->cat_ID); ?>
</ul><?php } ?>