WPでサイトを作るとき、簡単なブログサイトならウィジェットで事足りるのですが、コーポレートサイト等になるとそうはいきません。
規模が大きくなると、サイドバーで親ページに属する子ページのみの一覧を表示・・・なんてざらです。
なので、実際の案件で使ったことがあるページ一覧の取得方法をメモ。
特定のページに属する子ページ一覧を表示
<?php global $post; $args = array( 'post_type' => 'page', 'sort_order' => 'asc', 'sort_column' => 'menu_order', 'child_of' => 616 //親ページのID ); $myposts = get_pages( $args ); foreach( $myposts as $post ) : setup_postdata($post);?> <li><a href="<?php the_permalink(); ?>" title="<?php the_title() ?>"><?php the_title() ?></a></li> <?php endforeach; ?> </ul>
親ページにいる時は子ページ一覧を、
子ページにいるときは自分の親に属する子ページ一覧を表示
<a href="<?php
$permalink = get_permalink($post->post_parent);
echo $permalink;
?>" title="<?php the_title(); ?>">
<?php
$parent_title = get_the_title($post->post_parent);
echo $parent_title;
?>
</a></h3>
<?php
if($post->post_parent)
$children = wp_list_pages("sort_column=menu_order&title_li=&child_of=".$post->post_parent."&echo=0");
else
$children = wp_list_pages("sort_column=menu_order&title_li=&child_of=".$post->ID."&echo=0");
if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>