Wordpressの目次プラグインと言えば「TOC+」と「Easy Table of Contents」が有名ですが、後者のお話です。
ウィジェットでサイドスクロールバーに目次を追加したのですが、トップページにも目次が表示されていました。
トップページには見出し(Hタグ)なんて無いのですが、どうもトップページの最終ページにある記事の目次を出力してしまっているようです。
同じ症状で解決して下さっている方がおられたのでご紹介。助かりました。
プラグイン内のコードが原因で目次作成の挙動がおかしくなるようです。
この記事の目次
Easy Table of Contentsでトップページに目次が表示される
プラグインをインストールして有効化しました。

目次ウィジェットを設置
続いてサイドバー追尾にプラグインの専用ウィジェット「目次」を設置しました。
記事ページはうまく動作していたのでよしよしと思っていました。
が、トップページにも関係のない記事ページの目次が表示されてしまいました。
表示されるページとされないページがあり、作成される目次はトップページの最後に出力されている記事のもののようです。
キャッシュや他のプラグインとの干渉も疑ったのですが、Easy Table of Contents特有のバグ、というか仕様のようです。
対処法:プラグインのコードを編集する
以下のサイト様が役に立ちました。
無駄な時間を取らずに済み助かりました。
プラグイン内の「class.widget-toc.php」内のコードの記述に問題があるようです。
class.widget-toc.phpの編集
Wordpressの場合はダッシュボードから編集できますのでこちらで行います。
プラグイン > プラグインエディター
に進みます。
画面右上の「編集するプラグインを選択」で「Easy Table of Contents」を選択。
選択をクリックし、プラグインファイルの中から「class.widget-toc.php」を選ぶ。
139行目をコメントアウトし、140行目に新しいコードを追加する。
//if ( is_404() || is_archive() || is_search() || ( ! is_front_page() && is_home() ) ) return; if ( is_404() || is_archive() || is_search() || is_front_page() || is_home() ) return;
こんな感じです。
なお、FTPソフトで直接編集する場合、編集するファイルは以下の場所にあります。
/wp-content/plugins/easy-table-of-contents/includes/class.widget-toc.php
注意ポイント
プラグインのコアファイルを直接編集しているので、プラグインの更新があるとこのファイルは上書きされて元に戻ってしまいますのでご注意ください。
トップページに目次が表示される原因
404ページ、アーカイブページ、ページ内検索結果ページには元々出力されないようになっていますが、その次の条件分岐が問題です。
!is_front_page()&&is_home():フロントページではなく、かつホームページの場合に出力しない。
ポイント
- フロントページ:トップページ
- ホーム:投稿一覧が出力されるページ
Wordpressのテーマではフロントページ=ホームになっていることが多く、この条件に当てはまらないためトップページにも目次が出力されてしまうということですね。
コードを編集したら「ファイルを更新」を押してトップページを確認します。
キャッシュなどを削除してから確認するとトップページに表示されていた目次が表示されなくなりました。
まとめ
Easy Table of Contentsを導入した際にトップページにも目次が表示されてしまう問題の解決方法でした。
ん~通常トップページに目次を表示することは少ないと思うので、コードを変えた方が良いと思うんだけれど…
プラグインのアップデートの度に編集したファイルが上書きされて元に戻ってしまうはずなので、覚えておかなければなりません…
自分が遭遇した問題を詳しくネット上に拡散して下さる方がおられると無駄な時間を割かなくて済みます。今回も助けられました。
キャッシュを導入したりプラグインを増やすと問題個所が特定しにくくなりますね。