Easy Table of Contentsのバグ?サイドバーの目次がトップページ(ホーム)にも表示されてしまう問題。

2021-05-13

Easy Table of Contentsトップに目次が表示される_eyecatch

Wordpressの目次プラグインと言えば「TOC+」と「Easy Table of Contents」が有名ですが、後者のお話です。

ウィジェットでサイドスクロールバーに目次を追加したのですが、トップページにも目次が表示されていました。

トップページには見出し(Hタグ)なんて無いのですが、どうもトップページの最終ページにある記事の目次を出力してしまっているようです。

同じ症状で解決して下さっている方がおられたのでご紹介。助かりました。

プラグイン内のコードが原因で目次作成の挙動がおかしくなるようです。

Easy Table of Contentsでトップページに目次が表示される

プラグインをインストールして有効化しました。

Easy Table of Contentsトップに目次が表示される_001

目次ウィジェットを設置

続いてサイドバー追尾にプラグインの専用ウィジェット「目次」を設置しました。

Easy Table of Contentsトップに目次が表示される_002

トップページに表示される目次

記事ページはうまく動作していたのでよしよしと思っていました。
が、トップページにも関係のない記事ページの目次が表示されてしまいました。

表示されるページとされないページがあり、作成される目次はトップページの最後に出力されている記事のもののようです。

キャッシュや他のプラグインとの干渉も疑ったのですが、Easy Table of Contents特有のバグ、というか仕様のようです。

対処法:プラグインのコードを編集する

以下のサイト様が役に立ちました。
無駄な時間を取らずに済み助かりました。

プラグイン内の「class.widget-toc.php」内のコードの記述に問題があるようです。

class.widget-toc.phpの編集

Wordpressの場合はダッシュボードから編集できますのでこちらで行います。

プラグイン > プラグインエディター

Easy Table of Contentsトップに目次が表示される_003

プラグイン内のclass.widget-toc.phpを編集する

に進みます。

画面右上の「編集するプラグインを選択」で「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;
Easy Table of Contentsトップに目次が表示される_004

139行目あたりのコードを変更する

こんな感じです。

なお、FTPソフトで直接編集する場合、編集するファイルは以下の場所にあります。

/wp-content/plugins/easy-table-of-contents/includes/class.widget-toc.php

注意ポイント

プラグインのコアファイルを直接編集しているので、プラグインの更新があるとこのファイルは上書きされて元に戻ってしまいますのでご注意ください。

トップページに目次が表示される原因

404ページ、アーカイブページ、ページ内検索結果ページには元々出力されないようになっていますが、その次の条件分岐が問題です。
!is_front_page()&&is_home():フロントページではなく、かつホームページの場合に出力しない。

ポイント

  • フロントページ:トップページ
  • ホーム:投稿一覧が出力されるページ

Wordpressのテーマではフロントページ=ホームになっていることが多く、この条件に当てはまらないためトップページにも目次が出力されてしまうということですね。

コードを編集したら「ファイルを更新」を押してトップページを確認します。

Easy Table of Contentsトップに目次が表示される_005

トップページに目次が出力されなくなった

キャッシュなどを削除してから確認するとトップページに表示されていた目次が表示されなくなりました。



まとめ

Easy Table of Contentsを導入した際にトップページにも目次が表示されてしまう問題の解決方法でした。

ん~通常トップページに目次を表示することは少ないと思うので、コードを変えた方が良いと思うんだけれど…
プラグインのアップデートの度に編集したファイルが上書きされて元に戻ってしまうはずなので、覚えておかなければなりません…

自分が遭遇した問題を詳しくネット上に拡散して下さる方がおられると無駄な時間を割かなくて済みます。今回も助けられました。

キャッシュを導入したりプラグインを増やすと問題個所が特定しにくくなりますね。

-WordPress
-

site-logo
ありがとうございました!
良かったらシェアしてネ・w・
当サイトはピンバックを受け付けます。
  • この記事を書いた人
ザキ

ザキ

X:@sologaku

プログラミングに興味があり情報系の大学を卒業。

新卒で社会人になるも数年で退職し今はフリーランスとして生きています。

少しでも誰かの役に立てれば...と思い、当サイトでIT関係のハウツーを発信しています。


ソロ学運営者:ザキの自己紹介

© 2020 sologaku