WordPressのバージョン4.9からテーマやプラグインの編集画面がハイライト表示になりました。加えて更新時に構文のチェックが入り、エラーがあると「〇〇行のコードが・・・」と表示され更新できないようになりました。これによっていわゆる【エラーで画面が真っ白になる】という現象がほぼ出なくなるため、画面真っ白で頭が真っ白・・・となる心配が少なくなりました。
それはそれでいい機能なのですが・・・
セキュリティ面のことなどがあるためバージョンが更新されたときには必ずアップデートするようにしているので、いつも通り4.9に更新しました。そしてテーマファイルをカスタマイズする機会があったので実際に開いてみたら「まあ!なんて見やすくなったの?」というのが第一印象、行番号が表示され、特定コードに色が付き、エラーの疑いがある行はマークが付いたりして本当に使いやすくなったと思います。
でも問題が・・・
カスタマイズが終わり、【更新】ボタンを押した時です。更新にすごく時間がかかった挙句に表示されたのは
「何かうまくいかなかったようです。変更が保存されていないかもしれません。手動で修正し、FTP 経由でファイルをアップロードすることもできます。」
前々からWordPressの日本語の翻訳、特にエラーメッセージなどは何??と思うことも多かったのですが、今回のはお手上げです!だって「何かうまくいかなかった・・・」、何かって何だ~~~!!と思わずつぶやいてしまいました。
でいろいろ調べるうち、ある種の対策をすることで更新できるようになりました。これですべてという訳ではありませんが、同じエラーが出た方の参考になればと思います。
「何かうまくいかなかったようです。変更が保存されていないかもしれません。手動で修正し、FTP 経由でファイルをアップロードすることもできます。」と表示されて更新できない原因と対処例
今回加わったコードチェックは、更新時に今カスタマイズしているファイルだけでなく全てのファイルをチェックして動作に問題なければ完了するという形式のようです。
従って、更新しようとしているのがテーマだったとしてもエラーが他にある場合にはこの意味不明なエラーメッセージが出るようです。
チェックしたけどサイト内のどこかのファイルでエラーと思われる構文があったり、動作に問題が出る可能性がある、でもいろいろな組み合わせによることもあるので「何か・・・」という表現をしているようです。
【対処前に必ず行うこと】まずはコードのバックアップを取る
突然発生したこのエラーにびっくりして、うまくいかないからと画面をリロードしたり、画面を閉じたりすると、今編集した内容のみならず、このファイルのコードすべてが消えてしまうことがあります。
私はこの事象を実際に経験しました。直前にバックアップしたサイトのファイル類があってことなきを得ましたが、バックアップがなかったら..と青くなりました。
まず、何かアクションをする前に、一旦落ち着いて、今編集しているファイル(保存時にこの事象が発生している画面)のコードすべてをテキストエディターなどへコピーして保存してください。
【チェックポイント0】テーマを変えてみる
このチェックは、環境によっては、元のテーマに戻した際に完全に元の状態に戻らない場合があります。テーマを変更して問題ないことが分かっている、または、元に戻らなかった場合に自身で対応が可能な場合にのみ行ってください
バックアップを取ったら、何かが..が原因?なので、WordPress不具合対処の定石通り、テーマを現状のバージョンのデフォルトなどへ変更してみます。
そのテーマのfunctions.phpやstyle.cssを開いて何もせずに更新して、エラーが発生するかを試してください。
そして、何かコード(style.cssへ適当なスタイルコードなどを入れる)等をして再度確認してください。
それで解消するようであれば、再びテーマを元に戻したら問題が解消されるかもしれません(これで解消されるケースにも遭遇経験がありますが、何が問題で..というところは不明です)。
もしも解消しない場合には、私の経験では以下のようなケースがありますから、順に確認してみてください。
【チェックポイント1】サーバーのセキュリティ設定(WAF)の更新
サイト内改ざん防止のため、最近では多くのサーバーで保護機能が入っています。WAFやModSecurityと言われるものです。これらは特定のIPアドレス以外の操作を防止したり、改ざんされて影響の出る可能性が高い特定ファイルの更新を制限したりするなど、サーバーによっても、またセキュリティの方法によってもさまざまです。
テーマやプラグイン編集などで更新できるものがあったり、更新できないものがあったりということがある場合には、このセキュリティ機能が影響している可能性が高いです。
私が使っているカラフルボックスサーバーでも、ModSecurityの内容が変わったのか、突然テーマファイルのいくつかが編集できなくなりました。後述する問題を考えて操作してもダメでした。が、一旦ModSecurityをOFFにしたところきちんと更新できることが確認されました。
前述したように「更新できるもの」と「更新できないもの」がある場合や今まで大丈夫だったのに突然更新できなくなったといった現象が出た場合には、プラグインを停止したりテーマを変えたりすると今まで動いていたものが動かないなんて現象が出ることもありますから、まず初めにサーバーのセキュリティ機能を疑うのが正しいと思います。
サーバーによってメニューは異なりますが、セキュリティ、WAF、ModSecurityなどの単語で眺めて行けば何か見つかると思います。
ただ外部の人間が改ざんしようとしても同じように編集をブロックしてくれる非常にありがたい機能ですので、編集時だけオフにして、編集が終わったら再びオンにするという使い方をした方がいいでしょう。
以前ColorfulBoxサーバーのModSecurityが原因でこのエラーが出た時、サポートに問い合わせたら、「確かにModSecurityが更新されたようだがホスティングサービス(ColorfulBox)側では操作・調整はできません」というような回答をもらったことがありますから、他のサーバーでも同様のことがあるかも知れません
【チェックポイント2】セッション切れやログアウト絡み
追加したコードの確認のため、一旦ログアウトした状態でサイトを表示させた後で再びコード編集画面に戻ると、ログインが促されます。
そこは普通にログインすれば問題なくコード編集ができるようになるのですが、このことで、「何かうまくいかなかったようです。..」のエラーが出るようになることがあります。
この場合は再ログインするだけでなく、一旦ブラウザを立ち上げなおす、または、さらにパソコンの再起動を行うことで、正常な状態に戻り、このエラーが発生しなくなることがあります。
【チェックポイント3】コードを疑う
今までは更新できてたし、プラグインの追加やテーマの変更などもしていないのに新しくコード追記したらこのエラーが出た!という場合はまずこちらを疑います。
といっても記述が間違っていることは少ないことが多いのがこのエラーの怖いところかと思います。
どこかのサイトからコピーしたコードなのに、自信を持って書いたコードなのに何で??と思うかもしれませんね。
もしもコードに間違いがないことが確実であれば、コード前後や行ごとに挿入されている空白(スペース)を削除してみてください。
また別のサイトで掲載されているコードを参考に(コピペ)する場合「この部分は自身のサイトに合わせて」というものも多いと思います。これをサイト内の編集画面にコピーしてから加工するとエラーが出ることがあります。そんなときには一旦メモ帳(きちんとしたテキストエディタが望ましい)にコードを貼りつけて、そこで加工した後で全体を編集画面にコピーすると回避できることがあります。
特に日本語などのマルチバイト文字列をメッセージなどとして加工する場合にはエラーが出ることが多いようです(WordPressだけでなくほとんどのプログラムがこのマルチバイト文字列を苦手としています)。
【チェックポイント4】他のプラグインの不具合が引き金
テーマ編集しているのにどうしてプラグインが!?と思われるかも知れませんね。でも・・・今回私が遭遇したのはこれでした。
どこまで詳しくやっているのかは開発者でないので不明ですが、新しくなったプログラムチェック機能では更新ボタンをクリックすると一応関係するすべてのソースを検査しているようです(これで時間がかかる場合があるようです。)。
この中にはプラグインのソースも含まれているようで、長期間更新されていないプラグインや、もともと準拠していないコードを使っているもの、記述に誤りがあるものなどがあるとエラーが出るようです。
どこにエラーがあるか分からないけど・・・ということで「何かうまくいかなかったようです。変更が保存されていないかもしれません。手動で修正し、FTP 経由でファイルをアップロードすることもできます。」という表示になるんですね。
本当に「何か・・」なので今開いているコードの問題なのか?その他なのか判別がつかない状態だと言えます。
プラグインが関係してこのエラーが出るという現象は、公式フォーラム内の
WordPress 4.9アップデート後、エディターでテーマを編集できません
でも困っている方がみえることから分かりました。この人は特定のプラグインを停止したら正常に更新できるようになったようです。
私のサイトでも構文のエラーと表示されて更新されない時を除いては、エラーとなるプラグインを停止することで改善できました。更新後はそのプラグインを再度有効にすることできちんと動作しました。
とはいえWordPressから見てサイト内で何等かでエラーが出ていることには違いないのでプラグインの使用を停止するか、エラーにならないプラグインを模索するか・・何等かの対策はした方がいいと思います。
また更新できなかったときのメッセージの後半に書いてある通りFTPを使って特定のファイル(〇〇.phpなど)を直接アップロードすることでWordPress側のコードチェック機能が働かなくなるので更新できないということはなくなります。が、そのファイルにエラーがあった場合には旧来通りエラー表示されたり画面真っ白になったりしますので注意が必要ですね。
ユーザー設定でコードのハイライト表示を無効にできるオプションが追加されましたが、私の環境ではハイライト表示をオフにしてもコードのチェックは効いたままになり改善にはなりませんでしたので、上記のように原因を探るか直接アップロードするしかなさそうです。
余談ですけどこの機能についてプログラマーさんの間で「使いにくくなるのでは?」「画面がエラーで真っ白になるのを回避するにはいい方法だ」などいろいろと意見が分かれたようです。