目次の表示・非表示を切り替えボタンが表示されないTable of Contents Plus

WordPressプラグインでページ内のhタグから自動的に目次リストを生成してくれるプラグインに、

Table of Contents Plus (TOC+)があります。

Table of Contents Plus

 

TOC+は各ページ内のhタグの構造から、ページ内のサイトマップをセマンティックにページ内アンカーリンク付きの目次リスト生成してくれるので、SEO対策などでもよく使用されているようです。

 

ショートコード[toc]を配置するだけで、設定した固定ページや記事ページ、CPT UIなどで個別の投稿タイプを追加した場合も表示できるので、とても便利です。

 

長いページが多い最近のWebコンテンツでは、この目次一覧がとても長くなることもありますが、一覧をクリック一つで表示したり非表示にしたりするリンクボタンもプラグインの設定ですぐに表示できます。

 

先日、運営するランディングページを見ていると、目次の近くに表示されていた「表示/非表示」のリンクボタンが消えていました。

TOC+の設定画面から、[ユーザーによる目次の表示・非表示を切り替えを許可]のチェックを入れなおしても表示されず、CSSを調べて見ました。

どこをどう調整しても表示されないので、JavaScriptやfunction.phpの影響を調べましたが、どこをどう制御しても表示されませんでした。

 

おそらく原因は以前GooglePagespeedインサイトでサイト速度を調整した際に、いろいろとカスタマイズしたのでその影響だろうと予想はしたのですが、あまりこの表示、非表示のボタンリンクが表示されない件についての記事が見つからず(設定方法は鬼のように見つかります)途方にくれてheader.phpを眺めていると、どうも怪しい記述が。

 

<?php wp_deregister_script(‘jquery’); ?><!–jqueryを除外–>

あ、これだ。

 

カスタマイズされた配布型のWordPressテーマを使用した場合、wp_headで実にたくさんの余分なファイルが読み込まれてしまい、ページ速度がとても遅くなることがあります。

そのため、wp_deregister_script(‘jquery’);で余分なjqueryを読み込まないようにしていたためです。要はこの記述でwp_headで読み込まれるWordPress本体やプラグインのjqueryを読み込まないように指定して、個別にファイルを読み込んだりするわけですね。

 

結果としてページスピードを調整しすぎると、Webコンテンツ本来の表示や運用中に問題が発生しやすくなるため、pagespeedインサイトに合わせすぎて特殊なカスタマイズをしすぎると、今度は逆にメンテナンス毎に対応内容が煩雑になったり時間がかかったりすので、悩みどころです。

 

例えば、CSSやjqueryをすべてインラインで短縮記述にするとファイルサイズが軽くなったり読み込みが早くなったりするということなんですが、光回線の時代に数キロから数十キロバイト軽くしたところで、いったいどういうメリットがあるのか?という疑問がずーっとあります。

 

カスタマイズされてページソースを見ると延々とスクリプト記述やスタイルシート記述が続くページを見ると、すこしゾッとします。(例えば、セレクタを追加するときは一瞬でできるとはいえ、毎回生成しなおすのだろうか?と。)

 

 

話はそれましたが、プラグインはcssだけでなくjqueryも独自に読み込みを行うものが大半なため、jqueryが重複したり、古いバージョンを読み込んだりして、結構衝突を起こしやすい傾向があります。

 

この記述を削除すると、目次の脇に「表示/非表示」のアコーディオン機能のリンクボタンが無事表示されました。考えてみるとアコーディオンボタンは基本的にjqueryが使用されることが多いので、勘のいいひとだと3秒ぐらいで気づくのだろうと感じました。

 

Table of Contents Plusに限らず、動作していたプラグインやアニメーション的な視覚効果などが動かなくなった場合は、結構jquery関係の影響が多いので、これからはそこから疑うようにしようと再認識しました。

 

ただ、Table of Contents Plusは最終更新が「Released: 5 January 2016」と大分前になるので、将来的には警告やエラーが出始めるかもしません。

個人的にはあまり更新されないほうが安定しているので良いのですが、似た機能の新しいプラグインを導入するのも良いかもしれません。

 

Easy Table of Contentsというプラグインがあり、こちらが良いようです。

Easy Table of Contents

 

 

プラグインの公式ページには、「目次を投稿や固定ページ、カスタム投稿タイプに挿入することが出来ます。使いやすく、機能に特化したプラグインです。」と説明があるので、おおむねTOC+と同じ使い方が可能だし、評価も高いようなので、このタイミングで変更してもよかったのですが、別のWordPressサイトで試してからにしてみます。

 

 

この手のプラグインは、便利だと思って導入しても使い方がわからなかったり、特定のバグやほかのプラグインとの衝突が発生したりするリスクがあるので、事前に一度、あまり負担がないワードプレスサイトで試してから導入することにしています。

 

ただ、この手の機能はシンプルな構造なので、会員管理プラグインなどのようにあまり問題が発生しにくいので、すぐに導入しても問題が起きにくいプラグインになるでしょう。