化石的な古いWordPressの保守

今日は、古いWordPress環境の保守を担当しました。お客様の依頼で、法改正への対応として、運営しているサイトを一括で更新をかけていくような仕事だったのですが、あまりにも古い環境にびっくり。そんな環境でも何とかするのが私らの仕事です。

さて、私は WordPress の開発が得意なので、WordPressサイトの保守を依頼されることが多いのだけど、WordPress と言っても最新バージョンの WordPress だけがすべてではない。

5年以上前に作られた環境のまま WordPress のコアシステムのバージョンがアップデートされていない環境の保守を担当することがある。

バージョンが更新されていないWordPressの存在

WordPress の現行バージョンは 6 系だけど、ちゃんと保守がされていない環境の場合は、4 系のままだったりするし、そのWordPressが乗っているサーバーのバージョンが PHP5 系の場合もよくあることだ。もちろん依存しているプラグインも、最近では使われなくなったプラグインが多く使われているケースが多くて、アップデートも一筋縄ではいかない。

特にAll in One WP Migration などのプラグインが動かないレベルまで古い環境だと、データベースを直接操作する必要性が出てきたりするので、改修するにも一手間も二手間も余分にかかるものだけど、セキュリティパッチが当たっていない状態のまま放置されていることも多くあるので、そういう環境を最新版の PHP8 系の WordPress 6 系で動くようにしていくことも私たちの仕事の1つだと思っている。

実際に、上記のような状況の WordPress は、上場企業のような大きな企業でも存在する。

今と昔で実装方法のトレンドが大きく移り変わってきた

今日保守を担当していたサイトの場合だと、WordPress は 4 系で、カスタムフィールドのプラグインに「カスタムフィールドテンプレート」が使われていた。

ACF(Advanced Custom FIeld)という優れたプラグインが確固たる地位を築いた現在においても、古いサイトを保守するとなると、ACFが動かないことがある。AFC を導入しようとすると、データベースを更新してくださいと言われるけど、データベースを更新することが怖くて実施できない状況だ。

今回の場合では「カスタムフィールドテンプレート」の設定をそのまま変更する形になったけど、使い慣れていないプラグインの使い方を調べて、臨機応変に対応できることがエンジニアには求められることも往々にしてあると思う。

他にも、場合によってはカスタムフィールドのフォーム自体が functions.php にハードコートされているケースにもあたったことがあるけど、その場合は、そのハードコートされていた処理を読み解いて、プログラムを改修することにより、カスタムフィールドの項目を追加する形で対応したこともある。

過去のWordPressエンジニア達の創意工夫の英知が、現在の WordPress エンジニアたちを苦しめる状況を創り出しているケースも稀ではない。

最終的にはWordPressの仕組みを理解していれば対応できる

私たちに上記のような環境の保守を任せてもらえれば、環境を最新に保てるような作り方でテーマを作って、最新の状態に常に保ち続けるということをやっていくことは可能だけど、実際に保守の予算を割かない会社はそこそこあるように感じられる。決裁者と制作会社の関係にもよるけど、放置されていることは結構ある感覚だ。

実際にハッキングされて、サイトが改竄されてしまう状況に陥ってしまったのなら、もうどうしようもないと思うけど、そうなる前ならまだ手の打ちようがある。情報セキュリティに投資する企業は多くないと思うけど、実際に被害にあってしまうと、困ってしまうはずだから、そうなる前に、問題ない状態にサイトを更新しておくことが必要だと思う。

化石のような環境でも、バックアップを取得してから、順を追って更新をかけていく手続きは心得ているので、声をかけていただければ、支援できることもあると思う。