WordPressが壊れたら?
WordPressは壊れることがあります。
いろんな原因がありますが、大体は
- 更新したことでWordPress本体やプラグインの一部が変更内容に対応できなくなった
- 自分がカスタムしたところに不備がある
のどっちかです。
そのときは次の順番で修復できるか試していきます。
実は壊れてない可能性を疑う
壊れてるように見えるけど実は壊れてないことがあります。
このとき、ヘタに直そうとすることで壊れていなかったものを壊してしまうことがあります。
急に表示がおかしくなるとドキッとして慌ててあちこちいじってしまいがちです。
落ち着いて、まずは壊れていないかもしれないことを疑いましょう。
実は壊れていないのに壊れたように見えるときは、ブラウザが過去のデータと最新のデータをごっちゃにしてしまってるときに起こります。
ブラウザくんはなぜ過去のデータと最新のデータをごっちゃにしてしまうのか?
それは、できるだけ早くサイトを表示させようとしているからです。

サイトの表示は画像や文字などのいろんなデータをネットからダウンロードすることで実現されます。
ただ、ダウンロードは時間がかかるんです。
なので、一度見たサイトのデータはパソコンに保存しておき、次に見たときはそのデータを使うことで素早く表示させる仕組みになっています。
次に見たときにそのサイトが前と同じなら問題ないんですが、リニューアルなどでサイトの中身が変わったときに問題が起こります。

基本的には変わったデータをダウンロードする仕組みになっているんですが、それが中途半端にされてしまうことがあります。
このときに前のデータと今のデータがごっちゃになってサイトが変な見え方になってしまうのです。
確認するにはブラウザの「シークレットモード」を使います。
ブラウザによって名前が違いますがどれも同じものです。
Edge→InPrivate ブラウズ
Firefox→プライベートブラウジング
Chrome→シークレットモード
WindowsでChromeを使っているなら、CtrlキーとShiftキーを押しながら「N」キーを押すとシークレットモードに変わります。

この黒いブラウザで自分のWordPressサイトのいろんなページを見てください。
さっきおかしくなっていたページがきれいに表示されていたら、それが本来の状態なので、何もすることはありません。
シークレットモードは過去のデータを使わずに全部新たにダウンロードして表示します。
なので、過去のデータとごちゃまぜになって崩れることがありません。
逆にシークレットモードを使ったときだけ崩れているのであれば、それは過去のデータが正しくて今のデータが間違っているということなので修正が必要です。
他のページでも問題なさそうなら確認はここで終わり。
問題が起きたと思ったのは実はなんでもなかったというハッピーエンドになります。

シークレットモードで見ても問題がある場合は残念ながら何か問題があります。
次の手順に進みましょう。
たぶん、問題が起こっているのはプラグインかテーマのどっちかです。
このどちらかがアップデートした最新WordPressに対応していない可能性が高いです。
WordPressはWindowsやiOSなどと同じように定期的に更新されます。
そのとき更新されるのはWordPress本体だけで、その中にあるテーマやプラグインは更新されません。(それぞれ個別で更新されます)。
更新すると今までのルールが変わることがあります。
が、テーマやプラグインは更新していないので、今までのルールのままだと思って動きます。
そこで意思疎通が取れなくなり、動作がおかしくなってしまうというわけです。

同じルールで動いているときは問題が起きないけど、ルールが変わると、今までそのルール前提で動いていたものがおかしくなりることがあります。

どれが原因か特定するために1つずつオンオフを切り替えて確認していきます。
プラグインを1つずつ止めて確認する
プラグインをどれか1つ無効化します。そしてサイトの崩れが解消するかを確認します。
解消しなければもう1つ無効化して、サイトの崩れが解消するか確認、しなければまた次…という感じで。
その途中で不具合が解消するなら、そのプラグインが原因です。
大抵のプラグインはWordPressのアップデートに合わせてプラグインもアップデートしますが、中にはアップデートされないまま放置されたままのものもあります。
半年以上アップデートされていないプラグインは今後もアップデートされない可能性が高いです。
その場合は、
- プラグインを使わない方法を考える
- プラグインと同等の機能を自作する
のどちらからを選ぶことになります。
多くは前者を選ぶことになると思いますが、そもそもそれができないからプラグインを頼ったのであり、それができれば苦労しないと言いたくなるかもしれません。
が、それ以外に解決策はないのです。
このサイトでは自作テーマを勧める理由の1つがこれです。自作テーマであればプラグインを使わずに自分で書いたプログラムで代用できる可能性があります。
既存テーマを使うと、いらない機能ばかり詰め込まれ、必要な機能が足りない、いわゆる「帯に短し襷に長し」になりがちです。
欲しい機能があるけど使いたいテーマでは実現できない、だからプラグインで実現する。というのがよくある流れですが、プラグインは簡単に願いを叶えてくれる反面、問題が起こったときにすぐに行き詰まるモロさを持ち合わせています。
プラグイン1つ1つはすばらしくても他のプラグインを同時に使うことは想定していない(していたら開発が終わらない)ので、想定外のトラブルが起こりやすいです。
舞台セットのハリボテみたいなもので、オモテ向きは充実しているように見えても、ウラはテープでベタベタつぎはぎ、少し押せば全部バターンと倒れるみたいな。

自作テーマは必要な機能だけ自分で書いて加えていくので、このような問題が起こったときもどこの記述に問題があるか原因と対策が決めやすいです。
テーマに問題がないか確認する
テーマに問題がある場合、その問題を文章で教えてくれる機能があります。(英語ですが)
この機能は普段はオフになっているので、オンにします。
オンにするとそのサイトのエラーがあなただけでなく、全世界に公開されることになります。
エラーはハッキングの格好のターゲットです。
つまりエラー表示を常にオンにするということは「ここからハッキングしてください」と言ってるようなものです。
なので、必要なとき以外はオフにしておきます。
FTPソフトで「wp-config.php」をダウンロードして編集します。
ファイルはWordPressの一番上の階層にあります。

これをエディタで開きます。
Windowsのエディタといえば「メモ帳」ですが、サイト制作でこれは使ってはダメです。
サクラエディタ、Visual Studio Code、Atom、Sublime Textのどれかを使ってください(無料)。
自分はSublime Textを使いますが、人気なのはVisual Studio Codeです。
中にdefine(‘WP_DEBUG’, false);と書かれているところがあります。この「false」を「true」に書き換えます。


書き換えたwp-config.phpをアップロードします。
そして表示がおかしくなっているページを表示すると今まで出なかった英文が表示されていると思います。(それでもエラーが出ない場合は後述)

エラーは基本的に英語です。が、英語ができなくても問題ありません。
この文章をそのままコピーしてGoogle翻訳にかければいいのです。

上の画像のエラーを翻訳にかけるとこうなります。
ごちゃごちゃ書かれてますが、ここで重要なのは最初と最後だけです。
最初の「未定義の変数trueeeeeの使用」と、最後の「wp-config.php on line 84」というところです。
変数とはプログラム用語で「ある値が入ったもの」です。
変数は自分で好きに作ることができます。
たとえば、$aiueo = 1+1;と書くと$aiueoには1+1の答え、「2」が入ります。
PHPでは「echo」という命令でその後に続くものを文字で表示させることができます。
HTMLでは「こんにちは」と書けばそのまま文字で表示されますが、PHPは「echo」と命令しないと何も表示されません。
で、echo $aiueo;と書くと$aiueoには2が入っているので、画面上には「2」が表示されます。
しかし
$aiueo = 1+1;
$aiueo = 2+3;
echo $aiueo;
こう書いた場合は「5」が表示されます。
最初は1+1で2が入っていましたが、echoする前に2+3、つまり5が$aiueoに入ったので、値が変わったからです。
このように同じ名前で中の値がいろいろ変わるので「変数」と言います。
で、今回のエラーは「未定義の変数trueeeee」と言っています。
言い換えれば「trueeeeeなんて変数は存在しない」と怒られているわけです。

厳密には今回のエラー特有の箇所、「trueeeee」や自分のファイルの場所を示す「(ファイル名)on line 84」などは不要ですが、それを判断しているとややこしくなるので、考えずにそのままGoogleに丸投げしてしまっていいです。
今のGoogle検索は賢いのでそのあたりはうまく処理してくれます。
なぜか。
さっきfalseをtrueに書き換えると言いましたが、このとき書き間違えてtrueを「trueeeee」と書いてしまったからです。

trueならPHPは意図を正しく理解できますが、trueeeeeは登録されてないので処理が止まってしまうのです。
このようにエラーを表示させることで、原因を素早く突き止めることができます。
エラーの最後にはそのエラーがファイルのどこで起こったかが書かれています。
今回の場合「wp-config.php on line 84」、つまりwp-config.phpというファイルの84行目でエラーになっているということです。

行数はエディタによって表示できるものとできないものがあります。表示できるもののほうが便利です。
翻訳でも意味がわからないときはその文章をそのままGoogle検索に投げてしまうといいです。
大抵のエラーは過去にいろんな人が同じ経験をしています。
その情報がヒットし、解決方法も書いてあるので、それを参考に対応していけばエラーが解決します。

↑「WordPress」なんて一言も言ってないのにWordPressでの対処方法が出てくる有能ぶり
厳密には今回のエラー特有の箇所、「trueeeee」や自分のファイルの場所を示す「(ファイル名)on line 84」などは不要ですが、それを判断しているとややこしくなるので、考えずにそのままGoogleに丸投げしてしまっていいです。
今のGoogle検索は賢いのでそのあたりはうまく処理してくれます。
エラーが出ない場合は復元
エラーを出す設定にしてもエラーが出ない場合は最後の手段、「復元(リストア)」をします。

今のWordPressが壊れる前にコピーしておいたWordPressでまるごと上書きすることになります。
少し手順を間違えるだけで、それがまたWordPressを壊す原因になってしまう可能性もあります。
作業は慎重に進めましょう。
最初にWordPressを作ったとき、バックアップを取っておいたのでこれを使っていきます。
WordPress本体の復元




FTPソフトで保存した場所が見つけきれないなら、エクスプローラ(フォルダ)から直接持ってくる方法がわかりやすいです。

ただし、このやり方はミスの元になるので、おすすめしません。
なるべく早くFTPの左右ウインドウでやり取りする方法に慣れたほうがいいです。
サイト作成を続けると同じようなファイルをいくつも作ることになりがちです。(新しいデータを作ったけど、古い方も念のため取っておきたい、など)
今回のように丸ごとコピーしたものがいくつもあると、パッと見で区別がつかず、古いもので新しいものを上書きしてしまったりします。

これを防ぐには自分のパソコンのファイルとサーバー上のファイルをフォルダごと同じ構造にして、双方を常に連動させるようにします。(「同期」と言います)
これにより、左右どちらかのフォルダを移動したらもう一方も同じように移動するようになり、フォルダを間違ってダウンロードしたりアップロードする失敗を防げます。
また、左右どちらのファイルが新しいか、色で判断できるようにもなります。

FileZillaの場合は緑が新しいファイル、黄色はもう一方に存在しないファイルです。
黄色が多いときは全く違うものを同期させようとしている可能性があります。
このように視覚的に注意喚起させておくと作業に集中しやすくなります。
FileZilla以外のFTPソフトでも大体似たような機能はついています。
データベースの復元(リストア)
FTPソフトでファイルの復元が終わったら、次はデータベースの復元です。
WordPressはファイルとデータベースの組み合わせで1つのサイトを構成しています。
データベースはレンタルサーバーの管理画面から操作します。
以下、レンタルサーバーがエックスフリーの場合の手順です。
他のレンタルサーバーも大体同じ手順です。





一番上に「information_schema」というのがありますが、これを使うことは今後ないので、存在しないものと思っていいです。
押すとその「テーブル」のリストが表示されます。

たくさんのテーブルが集まって1つのデータベースが作られています。
1つのデータベースとファイルを組み合わせて1つのWordPressが作られています。
これを丸ごとダウンロードします。
自分のデータベース名が分からないときは、wp-config.phpの中に書いてあるのでも確認できます。
では、データベースの復元を始めます。
大まかな手順としては
- 今あるデータベースを自分のPCに保存
- 今あるデータベースを削除
- 以前保管していたデータベースを入れる
となります。
今のデータベースを保存
まず、今のデータベースを保存します。
壊れてるものを保存する必要があるの?と思うかもしれませんが、あります。
もしかすると消したあとにデータベースが原因じゃなかったことが分かるかもしれません。
そのときに戻せるようにするために今のデータベースも念のため保存しておく必要があるんです。

エクスポートするための設定画面が開きます。
最初からいい感じの設定になっているので、何も変更せずに下の「実行」を押します。


このあとデータベースを消して後から戻したくなったら、このデータを使います。
今のデータベース削除
ではデータベースを消します。
データベース名を押して(すでに中身のリストが表示されている場合は不要)、「すべてをチェックする」を押して「削除」を選びます。



壊れる前のデータベースを入れる
ここに以前取っておいたバックアップデータを入れます。


拡張子は「.sql」です。


これで復元(リストア)が完了です。