WordPress でいろいろと書きはじめる前に、あらかじめきちんと物書き支援環境を整えておきたいと考えているのだが、その中でも後から変更を入れるのが大変になるであろうもの、まずは見出しから目次を自動生成する仕組みを固めておきたいと思っていた。目次を自動生成する Widget には「Table of Contents Plus」などの定番のものがいくつかあるようなので、その中から選ぶこととして、ちょっと気になっていたのが「Qiita」などでお目にかかる画面横のサイドバーに表示を固定させておく、いわゆる「Sticky 動作」機能を目次に持たせる方法である。

専用の Theme を使う

ちょっと調べてみると、まず一つには Widget Area に Sticky 動作オプションを持たせてある Theme があるようだ。このタイプの Theme では既存の Widget を専用の Widget Area に配置してやれば、そのままその Widget が Sticky 動作をしてくれるようになる。手間いらずで便利な方法なのだが、残念なことに我が家で使っている Jevelin Theme にはそのような機能が提供されていない。そもそもそのような機能を提供している Theme はあまり多くないようでもある。

CSS をカスタマイズする

もう一つの方法は、自分の使っている Theme の CSS 設定に手を入れて Template を自前でカスタマイズする方法だ。プログラミングをかじったことある人であればそれほど敷居の高いアプローチでもないのだが、よく紹介されている flexbox を使う方法は汎用性は高いものの、それと組み合わせる Theme の内部構造との相性のことも考えておかなければならない。Jevelin Theme で言えば内部的に使われている before/after といった疑似要素と flexbox の相性がよくなく、うまくレイアウトを維持したまま Sticky 動作を取り込むことができなかった。

既存の Widget に Sticky 動作を拡張する

そんな都合のよい方法があればなあ、と Web をさまよっていたところで見つけたのが「Q2W3 Fixed Widget」という PlugIn である。この PlugIn を入れると既存の Widget に「Fixed Widget」というオプションが追加され、このオプションを ON にするとその Widget が Sticky 動作をしてくれるようになる。

上の図の「Fixed widget」チェックボックスが「Q2W3 Fixed Widget」によって既存の Widget に追加されたスイッチである。実際の Widget の設置にあたっては サイドバー上で Sticky 動作をさせる可動範囲を設定するなどの微調整が必要だったりするものの、設定項目それ自体は直感的でわかりやすく、またこれまで使ってみた経験から言えばベースとなる Theme や組み合わせる Widget などとの相性問題のようなものもないようだ。このページに設置してある「Table of Contents Plus」Widget にこの PlugIn を使って Sticky 動作を追加してあるので、実際にさわってみてほしい。