自動更新されて困ったWordPress

週末にこのBlogシステム、WordPressからメールが届いた。

サイト (http://hdmr.org/d) を WordPress 5.7.1 へ自動更新しました。
何もする必要はありません。 バージョン 5.7.1 について詳しくは「WordPress について」画面をご覧ください。

なんだこれ? と思ったんだが、どうもWordPressには自動更新機能があるらしいですね。

基本的には互換性の問題はないということらしいのだが……

セキュリティ的に強固な状態を維持するのに役立つということのようである。


確かにこれは一理あるし、本来は大きな問題とならないはずなのだが、

実は更新前後でこのBlogの動きが変わっていたのである。

原因はwp-include/functions.phpに追加していたカスタムコードが消えていたから。

WordPressのカスタマイズをするためにfunctions.phpにコードを追加しろというのはよく見るので、

それに従ったのだが、このファイルが更新で変更されることはないのかな? というのは心配になっていた。

やっぱりあるんですね。


もともとこういうことはあるだろうと予期していて……といってもまさか自動更新されるとは思ってなかったんだが。

カスタマイズのコードの正味部分は別ファイルにしてincludeしていた。

なんでこれのincludeを再度書き加えれば戻るだろうとは思ったのだが、

自動更新のたびに手動対応が必要なのは困った話である。

そこで調べたところ「Code Snippets」というカスタムコードを追加するプラグインがあったので、

これをインストールして、下記のコードを自動追加させるようにした。

include('/var/www/wp/wp-includes/00_custom.php');

これによりfunctions.phpを直接いじってないので、自動更新の影響を受けることはなくなったはず。


自動更新が当然有効になっているのはWordPressの開発者があるべき姿を考えた結果なのだと思うが、

やはり本番のシステムをいきなり更新されてしまっては困るという声の方が多いようだ。

確かにプライベートの重要度の低いBlogだから自動更新されてもまだなんとかなったけど、

自動更新~修正までの間に投稿した記事はslugが漢字になってたり(後に記事のslugについては修正済)、

URLが書き換わってたり、いろいろ問題が起きてしまったわけである。

影響度が小さいはずと考えた更新プログラムも、環境によっては思わぬ影響を及ぼしてしまうことはあることだ。

そこで更新するにしてもテスト環境でテストしてから本番環境へというステップを踏みたいということで、

自動更新を切るための方法がいろいろ紹介されているが、設定画面で簡単に設定できる話ではないらしい。

この辺はWordPressの開発者と運用に関わる技術者の考え方の乖離がかなり大きいところである。


ちなみに00_custom.php(00で始まってるのは検索しやすくするためで深い意味は無い)の内容は下記の通り。

  • slugの付け直し(タイトルから漢字になってしまうところを wp-6085 などに強制付替)
  • パーマリンクのURL変更 (内部的なslugが blogn-4732 ならば /?e=4737 のように旧形式にURLに変換する)
  • RSS URLの自動変換(/rssを内部的にはindex.php?feed=rdfに変換している)
  • 上記自動変換によってURLの書換が起こらないようにする(なにもしないと /feed/rdf にURL変換されてしまう)
  • フィードリンクを強制的に/rssに変換
  • 検索結果の表示順序を日付順に固定(標準ではタイトルで検索結果ヒットの日付順→本文で検索結果ヒットの日付順)

といったところで、けっこういろいろあるんですね。

URL関係はApacheの設定でやってる部分もあるので、WordPressの更新だけで即ダメになるわけでもないのだが、

やはりいろいろおかしな挙動になっていたので、そこで気づいたというのが実情ですね。


やっぱり今まで化石みたいなBlogシステムを使ってたのがWordPressに変わるといろいろありますね。

よくメンテナンスされてるのは安全・安心とは言えるし、カスタマイズ性も高いけど、やっぱり難しいわ。

唯一の選択肢だろうと選んだWordPressですからうまく付き合っていくしかないね。