ページ分割時に全ページ分の目次を出力する(要TOC+)

記事中の見出しタグを使用し、自動で目次を作ってくれる便利なプラグイン「Table of Contents Plus」(以下 TOC+)。

以下のように <!--nextpage--> を使用してページ分割した記事だとどう表示されるのかというと…

 

このように、分割後のページ単位で見出しが表示される。

ページ分割時の Table of Contents Plus の目次(1ページ目) ページ分割時の Table of Contents Plus の目次(2ページ目)

これはこれでいいんだけど、そうではなく「全ページ分の見出しを出力する」ようにしたい。

 

そこで、TOC+ の機能を使いつつ全ページ分出力するようなショートコードを作成する。

  • TOC+ で作成された目次も出力されてしまうので、そっちだけを非表示にするCSSも出力している。
  • 出力形式のカスタマイズは、 toc_get_index(content) を呼ぶ前に $tic->set_option(array) で設定することで可能になる。TOC+のソースを参考にしよう。

 

そうしたら、作成したショートコードを出力したい部分に記述する。

 

以下のように表示される。

全ページの目次(1ページ目) 全ページの目次(2ページ目)

 

※ 注意点

TOC+ が有効でないと見出しタグにアンカーが作成されず、正常にジャンプできなくなる。つまり「目次を出すため」ではなく「目次から正しい位置に飛ぶため」に、リンク先のページでも TOC+ の有効化が必要となる。 [no_toc] で TOC+ を OFF にしないこと。

逆に「1ページ目だけ目次を出して2ページ目以降には出したくない」などという場合はひと工夫する必要がある。たとえば2ページ目以降は [paging_toc] を記述せず、かつ TOC+ で出力された目次を消すCSSを仕込むなど。