ページ分割時に全ページ分の目次を出力する(要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+のソースを参考にしよう。
  • (2021/6/29追記) バージョン 2106 以降では、$tic となっている部分を $toc_plus に変更すること。(変数名が変えられているため)

 

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

 

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

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

 

実際に使っているのがこちら(※上記のソースより更にカスタマイズを入れて丁寧に作ってるけど基本的な作り方は同じ)

※ 2019/1/31 追記:「ファイン・ラボ」の品質が超絶劣化したのでそのことを書きました。 はじめに突然だけど実は俺、おととしからダイエットをしていて。最初は食事にちょっとだけ気を付けたり、犬の散歩がてらウォーキングしたり、すっかりご無沙汰だったロードバイクをちょろっと再開したり。それで効果が出始めたところで、水泳を始めるように。ガンガン効果が出てきたところに、(水泳と違って家の近くでできてお金もかからない)ジョギングも併用。なつかしのビリーズブートキャンプを引っ張り出して再開したり。そんなこんな...

 

※ 注意点

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

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

banner
banner
banner