情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・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.'¤t_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 } ?>