WordPress 目次を自動生成する方法

WordPressで目次を自動生成する方法です。使用テーマはBizVektorです。

子テーマ内に「footer.php」ファイルを作る

① 親テーマ内にある「footer.php」をコピーします。

② 子テーマ内に「footer.php」をペーストします。

子テーマの「footer.php」にコードを追記する

① 「外観」「テーマの編集」を選択します。

② 「子テーマ」「footer.php」を選択します。

③ 次のコードを追記します。追記する場所は、最下段の</body>(閉じタグ)の直前がよいそうです。

  1. <style type=”text/css”>
  2. #toc {
  3.   margin: 0 auto;
  4.   width: 90%;
  5.   background: #f0f0f0;
  6. }
  7. .mokuji_wrap {
  8.   position: relative;
  9.   border: 2px solid #888888;
  10.   border-radius: 4px;
  11.   padding: 1em 0.5em 0.5em 0.5em;
  12.   margin: 48px auto;
  13. }
  14. .mokuji {
  15.   color: #666666;
  16.   text-align: center;
  17.   font-size: 18px;
  18. }
  19. #toc ol {
  20.   border: 0;
  21.   font-size: 11px;
  22.   font-size: 1.0rem;
  23. }
  24. #toc li {
  25.   line-height: 1.2
  26. }
  27. </style>
  28. <script src=”//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js”></script>
  29. <script type=”text/javascript”>
  30. $(function() {
  31.   var idcount = 1;
  32.   var toc = ”;
  33.   var currentlevel = 0;
  34.   $(“.entry-content :header”,this).each(function(){
  35.       this.id = “toc_” + idcount;
  36.       idcount++;
  37.       var level = 0;
  38.       if(this.nodeName.toLowerCase() == “h3”) {
  39.           level = 1;
  40.       } else if(this.nodeName.toLowerCase() == “h4”) {
  41.           level = 2;
  42.       } else if(this.nodeName.toLowerCase() == “h5”) {
  43.           level = 3;
  44.       } else if(this.nodeName.toLowerCase() == “h6”) {
  45.           level = 4;
  46.       }
  47.       while(currentlevel < level) {
  48.           toc += “<ol>”;
  49.           currentlevel++;
  50.       }
  51.       while(currentlevel > level) {
  52.           toc += “</ol>”;
  53.           currentlevel–;
  54.       }
  55.       toc += ‘<li><a href=”#’ + this.id + ‘”>’ + $(this).html() + “<\/a><\/li>\n”;
  56.   });
  57.   if(toc){ toc = ‘<div class=”mokuji_wrap”><div class=”mokuji”>目 次</div>’ + toc + ‘</div>’; }
  58.   $(“#toc”).html(toc);
  59.   //ページ内リンク#非表示。加速スクロール
  60.   $(‘a[href^=#]’).click(function(){
  61.       var speed = 1000,
  62.               href= $(this).attr(“href”),
  63.               target = $(href == “#” || href == “” ? ‘html’ : href),
  64.               position = target.offset().top;
  65.       $(“html, body”).animate({scrollTop:position}, speed, “swing”);
  66.       return false;
  67.   });
  68. });
  69. </script>

memo

wrap 基本枠
position 配置
border 枠線
border-radius 角丸
padding 枠線内の余白
margin 枠線外の余白
ol
ul
番号付リスト
並列列挙リスト
li リストの構成項目
line-height 行間

投稿文にコードを挿入する

① 「ビジュアルモード」で投稿本文を作成します。

② 「テキストモード」に切り替えて、目次を表示したい場所に次のコードを挿入します。

  1. <div id=”toc”></div>
<div id=”toc”></div>

参照サイト