それなりの規模のサイトを作成する場合、ページ構成に親子関係(階層構造)をもたせることはよくあります。
その場合、大抵は親ページに子ページの一覧を表示させると思いますが、Wordpressにはこれを自動で生成する機能はありません。
そこで、これを簡単に表示させることのできるショートコードを作成してみました。
仕様
- ショートコードを埋め込むページの子ページ一覧を表示
- 子ページ一覧を表示したい親ページをスラッグで指定することで、好きな記事・ページに子ページ一覧を挿入できる
functions.php
function childpages($atts) { extract(shortcode_atts(array( 'parent' => null ), $atts)); if (empty($parent)) { // 指定なしなら自分の子 $top_post = get_post($post->ID); } else if ($parent=="parent") { // 自分の親ページを親とする parent="parent" $top_post = get_post($post->ID); $top_post = get_post($top_post->post_parent); } else { // スラッグ指定ページを親とする parent="(slug)" $top_post = get_page_by_path($parent); } $children = wp_list_pages("title_li=&child_of=".$top_post->ID."&echo=0"); return '<ul class="child-page">'.$children.'</ul>'; } add_shortcode("childpages", "childpages");
使い方
[childpages]
例:自分の子ページ一覧を表示する
[childpages parent="parent"]
例:共通の親ページをもつ子ページ一覧を表示する
[childpages parent="slug"]
例:指定(スラッグ)ページの子ページ一覧を表示する