「WP Theme Test」が使えなくなったので、リスペクトを込めて同じことをするプラグインを作った話

サイト制作の現場で、地味に、でも長いこと頼りにしていたプラグインがあった。
「WP Theme Test」というプラグインで、公開中のテーマはそのままに、管理者や特定のIPアドレスからのアクセスだけ別のテーマ(テスト用テーマ)を表示できるというもの。クライアント案件でデザインリニューアルをするとき、本番環境に新テーマを一旦インストールしておいて、こちらの環境からだけ確認できる、という使い方をずっとしていた。作者はNakashima Masahiroさん。シンプルな発想だけど、これがないと地味に困る、というちょうどいい立ち位置のプラグインだった。
最終更新が2018年で止まっていて、最近のWordPress/PHPの環境だと動作が怪しくなってきた。長年お世話になった分、このまま静かにフェードアウトさせるのも忍びなかったけれど、実務で使えない状態を放置するわけにもいかず、同等の機能を持つプラグインを自分で作ることにした。
何に困っていたか
-
更新が長らく止まっていて、最新のWordPress環境での動作保証がない
-
PHPのバージョンが上がるにつれ、警告やエラーが出るようになってきた
-
代わりになる決定版のプラグインも見当たらない
似たようなことができるプラグインはいくつかあるが、「公開中のテーマを変えずに、特定の条件の人にだけ別テーマを見せる」というシンプルな機能に絞ったものがなかなか無い。それなら自分の使い方に合わせて作った方が早いという判断。
作ったもの:Theme Preview Switcher
やっていることは元のプラグインとほぼ同じ。
-
管理画面でテスト用テーマを選択し、ON/OFFを切り替え
-
表示対象をユーザーロールで指定(管理者だけ、編集者も含む、など)
-
IPアドレスを登録しておくと、その環境からは常にテスト用テーマが見える
-
URLパラメータでのプレビューにも対応(クライアントに一時的にURLを共有する用途)
一般の訪問者には常に公開中のテーマが表示されるので、本番環境に直接新テーマを入れて作業しても事故らないという点は変わらず担保している。
その上で、今のWordPress/PHPの書き方に合わせて作り直した。
-
入力値のサニタイズ、出力のエスケープ、フォーム送信のnonce検証をひと通り実装
-
プレビュー中は管理バーに通知バッジを表示するようにした(地味に便利)
-
ブロックテーマでもクラシックテーマでも動くようにフィルターを組んだ
-
無効化してもデータは消えず、アンインストール時にだけ設定を削除する作り
名前について
最初「Theme Checker」という名前で作ったが、これだと「テーマの動作チェックツール」に見えてしまい、実際の「テスト用テーマをこっそり見せる」という機能が伝わりにくいと思い直した。最終的に Theme Preview Switcher に変更した。
WP Theme Testへ
機能を作り直すにあたって、あらためて元のコードを読み返した。権限グループでの制御、IPアドレス指定、URLパラメータでの一時プレビューと、必要な機能が過不足なく詰まっていて、「よく考えられているな」と素直に思った部分が多かった。今回作ったものの骨格は、正直かなりの部分をこの設計に負っている。
長年更新が止まっていたとはいえ、2015年からずっと現場を支えてくれたプラグインだった。今回はそのバトンを受け取って、自分の手で今の環境向けに書き直した、というつもりでいる。WP Theme Test、そしてNakashima Masahiroさんに、あらためて感謝を。
今のところ
自社の制作案件で使う分には十分な状態。もう少し使い込んでみて、共有リンクの期限付き発行やアクセスログなど、あると便利そうな機能を足すかどうか検討中。
古いプラグインに依存していた部分を、自前で作り直して置き換える、という地味な作業だけど、こういうのを溜め込んでいくのが結局は自分の環境を長持ちさせることになる気がしている。