【解決済】Snow Monkey Formsで保存したのに反映されない原因。XserverのWAFではなかった話

結論からいうと、原因はXserverのWAFではなく、WordPressブロックエディター下部の「カスタムフィールド」パネルが開いていたことでした。
Snow Monkey Formsの設定はカスタムフィールドとして保存されるため、このパネルが開いた状態だと、保存時に古い値で上書きされてしまうことがあります。
発生した症状
WordPressのフォームプラグイン「Snow Monkey Forms」で、フォーム設定を編集して保存したはずなのに、画面を開き直すと変更前の状態に戻っている……という現象に遭遇しました。
「XserverのWAFが通信を誤ブロックしているのでは?」と疑い、WAFを全てOFFにして試しましたが、それでも同じ現象が再発。原因を特定するまでの調査過程と、最終的な解決方法を備忘録として残します。
- Snow Monkey Formsのフォーム設定画面で、送信先メールアドレスや本文などを編集
- 右上の「更新」ボタンを押すと、エラーも出ずに「保存しました」的な表示になる
- ところが、一度ダッシュボードに戻って再度同じフォームを開くと、編集前の内容に戻っている
- ブラウザのシークレットウインドウで確認しても同様
- キャッシュ系プラグインを一時停止しても変化なし
まず疑って試したこと(→ ダメだった)
保存不具合が起きた際、真っ先に疑うべき定番のチェックポイントは以下の通りです。今回はここから手をつけましたが、いずれも解決には至りませんでした。
1. ブラウザ・サーバーのキャッシュ
保存自体は成功していて、古いキャッシュ画面が表示されているだけというケースはよくあります。
- シークレットウインドウ(プライベートブラウズ)で開き直して確認
- WP Super CacheやLiteSpeed Cacheなどのキャッシュ系プラグインをクリア
- Xserverの「ブラウザキャッシュ設定」「サーバーキャッシュ」を一時的に無効化
→ 今回はどれを試しても変化なし。
2. XserverのWAF(Web Application Firewall)
レンタルサーバーのセキュリティ機能が、設定変更の通信を不正アクセスと誤認してブロックしてしまうケースは非常に多く、保存不具合の原因としてよく報告されています。
- Xserverの管理画面からWAFを一時的に全て「無効」にする
- その状態で再度フォーム設定を保存する
→ WAFを全てOFFにしても現象は変わらず再発。この時点でWAFは原因ではないと判断できました。
WAFが原因かどうかを見分けるポイント
WAFが本当に原因の場合、多くは以下のような症状が出ます。
- 保存ボタンを押すと403エラーや500エラーが表示される
- 特定の文字列(
<script>タグ、SQLっぽい記述、特定の記号など)を含む項目だけ保存に失敗する - ブラウザの開発者ツール(コンソール/Networkタブ)で、保存時のAjaxやREST APIへの通信がブロックされているレスポンスが確認できる
- WAFを一時OFFにした瞬間、同じ操作で保存が通るようになる
逆に、エラー表示が一切なく「保存しました」的な表示になるにもかかわらず、設定全体が丸ごと元に戻るというパターンは、通信の遮断ではなく、保存する「値」自体が別の場所(後述するカスタムフィールドパネル)に上書きされているケースを疑うべきサインです。今回はまさにこの後者のパターンでした。
3. プラグイン・テーマの競合、スクリプトエラー
- 保存ボタンを押した際、ブラウザの開発者ツール(F12キー→コンソールタブ)に500エラーや403エラーが出ていないか確認
- 他のセキュリティプラグインやログイン保護プラグインを一時停止して確認
→ コンソールにも特にエラーは出ておらず、これも原因ではありませんでした。
本当の原因:カスタムフィールドパネルが開いていた
サーバー側やセキュリティ設定を一通り疑って空振りが続いた後、Snow Monkey公式のサポートフォーラムを調べたところ、まさに同じ症状の報告が見つかりました。
Snow Monkey Formsのフォーム設定は、実は投稿のカスタムフィールドとして保存される仕組みになっています。そしてこれはSnow Monkey Forms特有の不具合ではなく、WordPressブロックエディター側の仕様に起因する現象です。
具体的には次のような挙動になります。
- ブロックエディターの編集画面下部に「カスタムフィールド」パネルが開いた状態になっていると、保存時にそのパネルに表示されている(古い)値でフォーム設定が上書きされてしまう
- そのため、フォーム設定側でどれだけ内容を変更しても、保存すると元の値に戻ってしまう
原因は、通信の遮断や不具合ではなく、編集画面の表示状態そのものが保存処理と競合していたことでした。サーバーのセキュリティ設定ばかりに目を向けていましたが、まさに灯台下暗しというやつです。
解決方法
対処はシンプルです。
- フォームの編集画面(ブロックエディター)を開く
- 画面下部にある「カスタムフィールド」パネルを確認する
- パネルが開いていれば閉じる
- 閉じた状態でフォーム設定を編集し、改めて保存する
これで、設定した内容がきちんと反映され、再度開き直しても変更が保持されるようになりました。
なお、カスタムフィールドパネル自体を今後表示させたくない場合は、ブロックエディター右上のオプションメニュー(縦三点アイコン)→ パネル設定から、カスタムフィールドパネルの表示をオフにしておくと再発防止になります。
まとめ
| チェック項目 | 結果 |
|---|---|
| ブラウザ・サーバーキャッシュ | 原因ではなかった |
| XserverのWAF | 原因ではなかった(OFFにしても再発) |
| プラグイン・テーマ競合 | 原因ではなかった |
| カスタムフィールドパネルが開いていた | これが原因 |
Snow Monkey Formsで「保存したのに反映されない」場合、WAFやキャッシュを疑う前に、まずは編集画面下部のカスタムフィールドパネルが開いていないかを確認するのが最短の解決ルートです。
同じ現象で悩んでいる方の参考になれば幸いです。
