またもやリニューアル

去年、ThemifyのBasicからSimpleに変えたばっかりなんだけど、どうも見づらく感じてた。なんか全体的なデザインが本当にシンプルすぎて。

で、最近ココナラでWordPressのサイトリニューアル作業を何件かやっているうちに自分のところも変えたくなってしまったので、とうとう長年使ってきたThemifyとサヨナラしてしまった。

Themifyは多機能で、かつフィルターフックや設定画面も充実してたせいもあってゴリゴリにカスタマイズしてて。

前回は同じThemify同士のテーマだったから簡単だったんだけど、今回は全く別のテーマを使うということで、同じ機能をもたせるのが大変だった。やっぱり、前にできてたことはやりたいし。

多機能だと聞いていたんだけど、さぞ設定画面の項目が多いんだろうと思っていたらそうではなく、意外にもかなりゴリゴリにカスタマイズする必要があった。アクションフックやフィルターフックが豊富で、できるだけテンプレートを直接オーバーライドせずに修正できるような工夫がされている(でもどうしてもオーバーライドもしくは既存のHTMLを捨てて全書き換えなどをしなければならない場面も当然あるにはある)。

ただ初期状態でも比較的キレイに表示されるのと、関連プラグインがいい感じにGutenbergを拡張してくれてるので明らかにThemifyより使いやすい(Themify BuilderはGutenbergがない頃のページビルダーだったから仕方ないんだけど…)のがいい感じ。

一番きつかったのがメニュー(グロナビ、ドロワーメニュー)周り。

以前はフィルターフック wp_nav_menu_argsを使って「特定の固定ページ(と子階層)を自動でグロナビに出す」ということをやってたんだけど、このテーマは「対象のメニューがない場合は表示せず処理終了」と処理されるので、 fallback_cb(メニューが存在しない場合に実行するコールバック関数)が呼ばれるタイミング自体がなくこれが使えない。

結局、自前で「メインメニュー用」と「ドロワー用」それぞれの Walkerをつくり(しかも既存のCSSを活かすため、元のものと全く同じHTMLで出力されるように調整した)、それをメニューと差し替えて表示するようにする必要があった。まるまる一機能作ってるのと同じじゃんこれ。

あとパンくずもまるごと直した。というのも、投稿記事に複数カテゴリを紐付けていた場合「最初に取れたカテゴリ」をパンくずとして使うんだけど、これをYoastの「プライマリカテゴリ」に対応させたかった。

でも、「投稿記事を開いた時に “1つ目のカテゴリ” ではなく “Yoastのプライマリカテゴリ” を取得する」という、そこだけ変えれば本当は良かったんだけど…さすがにそこまで都合良く作られてはいなかったので、以前自作したことのあるパンくず関数を持ってきてやはりHTMLを元のものと同じくするよう調整し、まるごと差し替えて使っている。

記事の一覧画面でアイキャッチ画像の右上にカテゴリ名がつくけど、ここも同様にプライマリカテゴリに対応させるよう修正した。

あとは投稿のメタ情報(日付、カテゴリなど)にタグを追加したりとか、逆に既存のタグ表示部を空欄にしたりとか…なかなか手間がかかったけど、なんとかエラーや表示崩れが出ないようには作り終えた。まあ勉強にはなったかな。