ワードプレスの投稿本文に目次リンク自動生成 javascriptで実装 | 車/バイク/DIY/PCとか自作のSHOブログ

ワードプレスの投稿本文に目次リンク自動生成 javascriptで実装

記事が役立ったら下部でご評価を!
1つ星2つ星3つ星4つ星5つ星 (1 投票, 平均: 4.00 / 5)
読み込み中...



ワードプレスでブログを投稿する際に、目次を作って、その後のタイトルにリンクを飛ばしたいという方いますよね。そこで今回はネットで拾った記事を参照 (w) に細かいやり方を解説します。

実際に実装するとこんな感じになります。

目次

参照したコード

https://www.marorika.com/entry/create-toc

2021年現在でも動作します。貴重なソースコードありがとう!!!

<!-- 目次を作成する先 -->
<div id="toc"></div>

<script type="text/javascript">
    document.addEventListener('DOMContentLoaded', function () {
        var contentsList = document.getElementById('toc'); // 目次を追加する先(table of contents)
        var div = document.createElement('div'); // 作成する目次のコンテナ要素

        // .entry-content配下のh2、h3要素を全て取得する
        var matches = document.querySelectorAll('.entry-content h2, .entry-content h3');

        // 取得した見出しタグ要素の数だけ以下の操作を繰り返す
        matches.forEach(function (value, i) {
            // 見出しタグ要素のidを取得し空の場合は内容をidにする
            var id = value.id;
            if(id === '') {
                id = value.textContent;
                value.id = id;
            }

            // 要素がh2タグの場合
            if(value.tagName === 'H2') {
                var ul = document.createElement('ul');
                var li = document.createElement('li');
                var a = document.createElement('a');

                // 追加する<ul><li><a>タイトル</a></li></ul>を準備する
                a.innerHTML = value.textContent;
                a.href = '#' + value.id;
                li.appendChild(a)
                ul.appendChild(li);

                // コンテナ要素である<div>の中に要素を追加する
                div.appendChild(ul);
            }

            // 要素がh3タグの場合
            if(value.tagName === 'H3') {
                var ul = document.createElement('ul');
                var li = document.createElement('li');
                var a = document.createElement('a');

                // コンテナ要素である<div>の中から最後の<li>を取得する。
                var lastUl = div.lastElementChild;
                var lastLi = lastUl.lastElementChild;

                // 追加する<ul><li><a>タイトル</a></li></ul>を準備する
                a.innerHTML = value.textContent;
                a.href = '#' + value.id;
                li.appendChild(a)
                ul.appendChild(li);

                // 最後の<li>の中に要素を追加する
                lastLi.appendChild(ul);
            }
        });

        // 最後に画面にレンダリング
        contentsList.appendChild(div);
    });
</script>

   

   

仕組みを理解

このコードは【H2、H3をタグを拾って、自動で見出しを生成】してくれます。

完結に文の構造を説明すると以下の通りです。

  • 目次 (pタグ)
  • そのすぐ下にカスタムHTMLを挿入してjavascriptのソースコードを貼る
  • 見出し (H2タグ、H3タグ)を作っていく => 自動生成完了!!   

  

   

詳細手順

詳細は以下に従って、ワードプレス上で記述してみてください。       

       

目次【pタグ (段落)】

目次の下は一般的には、その目次リストを入れるかと思います。

その目次の直下にカスタムHTMLを入れて、ソースコードをコピペします。

   

   

見出しタイトル【H2タグ (見出し)】

次は見出しタグを入れます。そうすると、上記に入れたjavascriptのコードが自動で見出しを生成してくれます。

ここでプレビューを見てみると、自動生成されているのが分かります。

  

   

H3見出しのコードです (記事はありません)

H3見出しのサンプルです。内容はありません。

以上、実践してみてください!

お願い、何卒評価を!!!
1つ星2つ星3つ星4つ星5つ星 (1 投票, 平均: 4.00 / 5)
読み込み中...


Twitter DM

その他質問があればTwitterでDMでもいただければ幸いです。

WORKSTUFF / GOODSTUFF|ポーランド発洗車用品の商品購入

シェアする

  • このエントリーをはてなブックマークに追加

フォローする