WordPressページで目次を自動生成する

WordPress

WordPressページで、目次を自動生成するするようにしてみたよ。

全てのページで目次が表示されるとウザイので、いま表示しているページに子ページ(サブページ)がある場合のみ、目次を生成・表示するようにしました。実際のコードはこんな感じです。

< ?php
    $children = wp_list_pages('title_li=&sort_column=menu_order&child_of='.$post->ID.'&echo=0') ;
    if( $children ) {
?>
    <ul>
        < ?php echo $children; ?>
    </ul>
< ?php
    } ;
?>

簡単に説明すると、wp_list_pages関数で、現在のページの子ページを取得し、子ページがあればULリスト形式で表示を行います。

上記コードの実際の表示例は『NTSCについて – Hinemosu』を参照してください。

応用例

「目次表示」でやってることは単純だけど、前提条件を工夫して親ページでのみ目次を表示すれば「グローバルナビゲーション→各項目表示時に関連タイトルを一覧表示」とかも出来そう。たぶんこんな感じ。

if (is_page() && !$post->post_parent) {(実行文)} ;

現在位置が「WordPressページ」で、且つ親ページを持っていない(サブページではない)場合にのみ「実行文」が処理されます。「実行文」で、サイドバーなどに目次表示を行えば、良くある企業っぽいサイトナビゲーションを構築できそうだ。

いやーWordPressは良く出来てるな。