WordPressテーマJINを使い、Table of Contents Plus(TOC+)で目次を生成。そのうえで見出しに”id”を埋め込んでページ内リンクを仕込むと、「目次をクリックした際に正常にその見出しに飛ばなくなる」という不具合が起きました。今回は、この症状の解決法をお伝えします。
JINにTOC+で目次を導入すると、見出しにidを設定して内部リンクしようとした際に不具合が起こる

WordPressのテーマである「JIN」で目次を表示する際には、プラグインの「Table of Contents Plus(TOC+)」の使用が推奨されています。
しかしこのプラグイン、H2~の「見出し」にアンカーリンク(id)を追加しすると不具合が起きます。(少なくとも当サイトの環境ではそうなりました)
<h3 id=”a”>見出しA</h3>
例えばこのように、見出しAにid=”a”を設定したとき。TOC+の目次の「見出しA」を押したときに飛ばなくなります。それどころか、見出しA以下の目次項目の飛び先が全てズレます。
Table of Contents Plusで目次作成 や ページ内リンク(テキストにリンクを設定して、リンク先にアンカーを設定)をして、リンクを飛ばすと若干下にずれてしまいます。CSSなどで調整する方法はありますか?
よろしくお願いします。
JIN公式フォーラムより引用
おそらく、JINの公式フォーラムのこの質問も、この症状のことを言っているのでは?と思いました。(まったく別の話かもしれませんが…)
結論から言えば、これはJINというよりもTable of Contents Plus(TOC+)の仕様によるもの。不具合というよりも、そもそもこうなってしまう作りなのだと考えられるので、その仕様を利用するのが簡単な解決法に思います。
結論、見出しにジャンプしたいときは、「rtoc-(数字)」にリンク設定すれば、不具合が起きない

どうにかして見出しにもidを設定できるようになれば良いのですが、それは一旦諦めました。
シンプルな解決策は、Table of Contents Plus(TOC+)で目次を作る際に内部で自動で設定されるリンクを利用することです。
TOC+で目次を用意すると、見出しの順番に自動で連番のアンカーが設定されます。目次を見たときに見出しがn個あるなら、上から順番にrtoc-1、rtoc-2、~、rtoc-nという具合。
なので、本文中で見出しに飛ばしたい箇所は「<a href=”#rtoc-1″>」などで設定してあげれば問題なくジャンプし、目次の挙動もおかしくならずに済みました。
上の画像で言えば、例えば「なぜ満足度が高いのか?」の見出しに飛ばしたい場合は「rtoc-2」。「静かに過ごせる」の見出しに飛ばしたい場合は、「rtoc-9」にリンクすればOKです。
不具合と解決策まとめ

というわけで、まとめると上の画像の通りです。
- Table of Contents Plus(TOC+)プラグインで目次を作る場合は、見出しにidを仕込むと不具合が起こる
- 自動設定されるアンカーを利用すればOK
- 上から数えてn個目の見出しには「#rtoc-n」でジャンプ可
こんな感じでした。もしもこのプラグインを使わなくなったときには全部設定し直す必要があるので、ちょっと不便ですね。
今回不具合が起きた、ページ内リンク(アンカー)とは
一応、そもそものお話もしておきます。ここからは今回の話題に上がったページ内リンクの仕組みの解説。
例えば「商品一覧の表」があって、その下に各商品の詳細の見出しが用意されているようなページをよく目にすると思います。商品名をクリックすると、その詳細にジャンプするような形。
そんなときに利用されているのが、ページ内リンクです。
飛ばしたい先に、idを設定する
例えば、このあとに設定するリンクで「ここ」に戻ってこようと思います。
下で「コレ」というテキストをクリックした方は、↑の「ここ」に戻ってきたはず。
今回は、飛ばしたい先のテキストにaというidを設定しました。
<span id=”a”>「ここ」</span>
こんな形です。これを、ページ内リンクを設定する、アンカーを設置する、などと呼びます。飛ばし先にid=”a”という目印を仕込んでおくようなイメージですね。
例えば<H2 id=”a”>といったように見出しに仕込むこともできるのですが、TOC+でそれをしてしまうと目次がバグると、そういう話です。上の例ように、見出しではなく通常のテキストに<span>を使って仕込む分には問題ありません。
飛ばしたい元テキストに、リンクを設定する
例えば、「コレ」をクリックすると、上の「ここ」に飛びます。
飛びましたか?
<a href=”#a”>「コレ」</a>
飛ばしたい元テキストには、このようにリンクを設定します。上で設定したアンカーに#をつけてリンク設定すれば飛ぶというワケですね。
テキストと書いていますが、ボタンでも、画像でも、通常のリンク同様になんにでも設定できます。わりとシンプルな仕組みなので、これ自体は簡単ですよね。
今回Table of Contents Plus(TOC+)で不具合が起こった理由は?
TOC+のプラグインが目次を生成するときに、「rtoc-n」というidが各見出しに設定されます。そうやってすでにidが設定されているにも関わらず、追加で見出しにidを設定することで、目次用のidに上書きされて目次が機能しなくなってしまった。
というシンプルな理由です。
JINを使うとき目次をTOC+で入れるなら、見出しにはidは設定しちゃダメ
もちろんこの症状を回避できているテーマやプラグインも沢山あるのですが、TOC+は残念ながらこのような仕様になってしまっているということみたいです。
見出しにはidを設定しない。という運用方法に決めてしまうことが簡単な解決方法でした。
それでは。
30秒診断
あなたにピッタリな退職代行は?
簡単な質問に答えるだけで、あなたの状況に合った退職代行がわかります。

診断結果
あなたにおすすめの退職代行は
退職代行SARABA(サラバ)です。
退職代行SARABA(サラバ)は、労働組合の退職代行。24時間365日対応で、有給も全て使って即日退職できます。
25,000円ポッキリと相場以下の価格で、安心して辞められますよ。
\CHECK NOW/
まずは無料で、24時間対応のLINE相談から
※退職代行SARABA公式サイトにジャンプします


診断結果
あなたにおすすめの退職代行は
退職代行SARABA(サラバ)です。
退職代行SARABA(サラバ)は、労働組合の退職代行。会社と交渉する法的な権利があるので、安心して即日退職できます。
25,000円ポッキリと相場以下の価格で、安心して辞められますよ。
\CHECK NOW/
まずは無料で、24時間対応のLINE相談から
※退職代行SARABA公式サイトにジャンプします


診断結果
あなたにおすすめの退職代行は
退職代行SARABA(サラバ)です。
退職代行SARABA(サラバ)は、労働組合の退職代行。有給も全て使って即日退職できます。
実はパワハラやセクハラなどの具体的な被害が無い場合は、弁護士に頼んでも賠償請求は難しいかもしれません。
そんな会社に時間を割くくらいなら、弁護士よりリーズナブルな「労働組合」のサービスでスッキリ辞めましょう。
25,000円ポッキリと相場以下の価格で、安心して辞められますよ。
\CHECK NOW/
まずは無料で、24時間対応のLINE相談から
※退職代行SARABA公式サイトにジャンプします


診断結果
あなたにおすすめの退職代行は
「弁護士法人みやび」です。
弁護士法人みやびは、その名の通り弁護士の退職代行。有給が全部使えるように交渉してもらえて、とにかく安心して辞められます。
料金は50,000円ポッキリと労働組合のサービスより高くはなりますが、その分「弁護士」というネームでトラブルのリスクなく辞められるでしょう。
お金よりも「安心」を取りたいあなたは、弁護士法人みやびで決まりです。
\CHECK NOW/
まずはLINEで無料相談から
※弁護士法人みやび公式サイトにジャンプします


診断結果
あなたにおすすめの退職代行は
「弁護士法人みやび」です。
弁護士法人みやびは、その名の通り弁護士の退職代行。有給だって全て消化できるのはもちろん、損害賠償請求までお願いできます。
退職代行自体の料金は50,000円ポッキリ。それに加えて賠償請求は「成果の20%」の成果報酬でお願いできるシステム。
損害賠償請求までお願いしたいあなたは、弁護士法人みやびで決まりです。
\CHECK NOW/
まずはLINEで無料相談から
※弁護士法人みやび公式サイトにジャンプします


診断結果
あなたにおすすめの退職代行は
「退職代行J-NEXT」です。
J-NEXTは普通の会社が運営する退職代行なので、有休消化などはお願いできません。
とにかく20,000円ポッキリという料金が魅力で、退職代行業界の中でもトップクラスの格安サービスです。
安心よりも「料金」を取りたいあなたは、退職代行J-NEXTに相談してみて下さい。
\CHECK NOW/
J-NEXTならとにかく安く辞められる


診断結果
あなたにおすすめの退職代行は
「退職代行NEXT」です。
退職代行NEXTは弁護士が運営する退職代行。弁護士のサービスの中ではもっともリーズナブルな料金で退職できると評判です。
退職料金は30,000円ポッキリ。損害賠償請求は成果報酬で20%(状況により変動する場合あり)です。
有給の使用、損害賠償請求の相談も含め、できるだけリーズナブルに済ませたいあなたにはNEXTがおすすめ。
平日日中のみの連絡にはなるので即日対応には向きませんが、じっくり相談して辞めたい方はNEXTに相談してみて下さい。
\CHECK NOW/
まずは無料で、LINE相談から。
※退職代行NEXT公式サイトにジャンプします


