WordPressプラグインの自動更新が引き起こした地獄の1日【実体験】
昨日まで普通に動いていた2つのサイトが、今日突然「このサイトで重大なエラーが発生しました。」という表示に。原因を調べていくとShortcodes Ultimateプラグインの自動更新の失敗が引き金だった。1つ目のサイトはわりとすんなり解決できたが、2つ目のサイトが大ハマリ。丸1日格闘した結果、まさかのカンマ1個の抜けが真犯人だった。「え、カンマ1個?!昨日まで動いてたのになんで今日壊れるの?!」同じ経験をした人の参考になればと思い、今日の一部始終をまとめる。
そもそもの発端:プラグインの自動更新失敗
「Shortcodes Ultimate」が自動更新されたタイミングで、2つのサイトが同時にエラーで表示されなくなった。自動更新は便利な機能だが、更新が途中で失敗するとプラグインが中途半端な状態になり、サイトが壊れることがある。今回まさにそれが起きた。
対処の流れ(共通)
管理画面にもアクセスできない状態だったので、まずFTPで対処した。
| FTPでプラグインフォルダ名を変更(無効化) |
| ↓ |
| サイトが表示される |
| ↓ |
| 管理画面にアクセスできるようになる |
| ↓ |
| 管理画面からShortcodes Ultimateをアンインストール |
| ↓ |
| 再インストールを試みる |
| ↓ |
| 有効化できないのでそのままアンインストール |
サイトA:これで解決
1つ目のサイトはアンインストールして終わり。あっさり正常に戻った。「Shortcodes Ultimateが自動更新に失敗しただけ。プラグインを消せば解決」この時点ではそう思っていた。
サイトB:大ハマリ
問題は2つ目のサイトだった。サイトAとまったく同じ手順でアンインストールしたのに、なぜかサイトBだけ正常に戻らない。「同じことをしたのになぜ?!」サイトは表示されるものの型崩れが起き、さらに重大なエラーまで表示されるという謎の状態に。
原因を探る旅
テーマを切り替えて検証
試しに子テーマから親テーマに切り替えたところ、サイトが正常に表示された。ここで「子テーマの中に何か問題がある」とほぼ確定。
phpMyAdminで投稿・DBを全検索
Shortcodes Ultimateのショートコードは [su_ で始まる。投稿本文やウィジェットにショートコードが残っていないかphpMyAdminで確認した。
-- 投稿本文を検索
SELECT ID, post_title, post_content
FROM wp_posts
WHERE post_content LIKE '%[su_%';
-- ウィジェット・設定を検索
SELECT option_name, option_value
FROM wp_options
WHERE option_value LIKE '%[su_%';
両方とも結果は0件。データベースには何も残っていなかった。
FTPで子テーマのファイルを確認
使用している子テーマを無効化し新しく子テーマを作り直す。スタイルシートから順番に1つUPしサイトが正常に表示されるか確認しながら行った。そして見つかったのが、sidebar.phpが原因だということがわかったw
発見!カンマが1個抜けていた
// NG:カンマが抜けている
$rss = fetch_feed(array(
'https://webcss.withrun.org/rss/...',
'https://webcss.withrun.org/rss/...' // ← ここにカンマがない!
'https://webcss.withrun.org/s/rss_atom/'
));
// OK:カンマを追加
$rss = fetch_feed(array(
'https://webcss.withrun.org/rss/...',
'https://webcss.withrun.org/rss/...', // ← カンマを追加
'https://webcss.withrun.org/rss_atom/'
));
カンマを1個追加したら、あっさり解決。「え、これだけ?!丸1日これだったの?!」
「昨日まで動いていたのに今日壊れた」のはなぜ?
ここが一番腑に落ちなかった部分。カンマが抜けていたなら昨日もエラーのはずでは?答え:Shortcodes UltimateがPHPのエラーを隠していた。
Shortcodes Ultimateは内部でPHPのエラーハンドリングをカスタマイズする処理を持っている。これが有効な間は、sidebar.php のカンマ抜けによるエラーが握りつぶされていた。つまりこういう状態だった。
| 昨日 | 今日 |
|---|---|
| sidebar.phpにカンマ抜けのバグが存在 ↓ Shortcodes Ultimateがエラーを握りつぶす ↓ サイト正常表示(エラーは起きていたが見えていなかった) | Shortcodes Ultimateの自動更新が失敗 ↓ プラグインが中途半端な状態になる ↓ エラーを握りつぶす機能も正常に動かなくなる ↓ カンマ抜けのエラーが表面化 ↓ 重大なエラー表示 |
つまり今回の事件の構造はこうだった。
| 直接の引き金 | Shortcodes Ultimateの自動更新失敗 |
| 真の原因 | sidebar.phpのカンマ抜け(以前からあったバグ) |
プラグインの自動更新失敗が、潜在していたバグを表面化させたというわけだ。
教訓
1. 自動更新は万能ではない
自動更新が失敗するとサイトが壊れることがある。特に複数サイトを運営している場合は影響範囲が広くなる。更新後は必ずサイトを確認する習慣をつけたい。
2. 「昨日まで動いていた」は「正常だった」ではない
エラーが隠れていただけで、バグはずっと存在していた可能性がある。今回はまさにそのケースだった。
3. 同じ手順で解決しないときは別の原因が潜んでいる
サイトAで解決した手順がサイトBで通用しなかったのは、サイトBだけ別のバグを抱えていたから。「なぜ同じ結果にならないのか」という視点で掘り下げることが大事。
4. PHPの構文エラーはカンマ1個でも致命的
PHPは文法に厳しい。カンマ、セミコロン、クォーテーションの抜けが即サイトダウンにつながる。コードを書いたら必ず構文を確認する。
5. FTPは必ず使える状態にしておく
管理画面にアクセスできないときでもFTPがあれば対処できる。いざというときのためにFTPソフトの設定は済ませておこう。

Shortcodes Ultimateの自動更新失敗という直接の引き金と、以前から潜んでいたカンマ1個のバグが重なって、丸1日の格闘になった。
脱力感は否めないが、これも経験。同じ悩みで困っている人の役に立てれば幸いだ。







コメント