プラグイン

Easy Table of Contentsプラグインのバグ?

  

3
(8)

短い記事です。

便利に利用させてもらっているEasy Table of Contentsプラグインですが、トップページになぜか最新記事の目次が表示されてしまっているのに気付きました。

Easy Table of Contents
使いやすい目次を、ページの内容に基づき完全自動で生成し表示します。
Easy Table of Contents

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

まず事象の確認ですが、本ブログではサイドバーに目次ウィジェットを配置しています。読者に対してページ内をナビゲートするのに利用中です。ところが、以下の画像の通り、トップページの右側に「この記事のもくじ」が表示されてしまっていることに気付きました。

記事一覧の一番上の記事の目次を引っ張ってきてしまっています。一番上の記事本文に目次がない場合にはトップページでも目次は表示されずにしばらく気付きませんでした。

トップページ

何がいけないのかよく分からず四苦八苦しましたので、解決方法について共有しておきます。同じような事象で悩まれている方がいましたら参考にしてください。

Easy TOCプラグインの修正

プラグイン本体を修正します。直接plugins/easy-table-of-contents/includes/class.widget-toc.phpを修正してしまってもいいですが、WordPress管理画面のメニュー→「プラグイン」→「プラグインエディター」から編集するプラグインを選択で「Easy Table of Contents」を選択し、includesディレクトリ配下のclass.widget-toc.phpを選択することでも修正可能です。

プラグインの編集画面

修正箇所は139行目です。404ページ、アーカイブページ、検索ページの場合は処理を抜ける(=目次を作らない)、もしくはフロントページではないが、トップページである場合は処理を抜ける、という意味になっています。

なんでフロントページではないがトップページである場合としたのかは分かりませんが(この条件に当てはまるのはトップページではないフロントページの場合は目次を作成、ということですが、どのような場合?)、この部分を以下のように修正します。

		public function widget( $args, $instance ) {

			//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;

			global $wp_query;

			$css_classes = '';

フロントページの場合もトップページの場合も目次は作成せず処理を抜けるように修正します。

フロントページとホームページ(トップページ)の違いについての解説は他の方にお任せしますが、私のトップページでは最新の投稿を表示していますのでis_front_page()もis_home()もTrueを返却します。!True(=False)&&True→Falseですので目次作成処理に入ってしまいます。

上記修正をすることで無事にトップページから目次を消すことができました。

トップページ 改善後

注意ポイント

プラグインのアップデートをした際には、修正したコードが消えてしまいますので再度設定が必要となります。

記事は以上

この記事は役に立ちましたか? | Is this article useful for you?

評価をお願いします | Please leave your rating.

平均 | Av.: 3 / 5. 投票数 | Votes: 8

最初の評価を下さい | Please vote for the first rating.

-プラグイン
-, , , ,

© 1999 - 2020 蒲田ネット