2:36 AM投稿記事の長さ:日本国憲法 × 0.4個 くらい

WordPress独自テーマのfunction.phpを変更した後にエラー画面から動かなくなった時の最終対処法


トップイメージ

皆様いかがお過ごしであろうか? ボカロの新曲が完成したものの久々のAfter Efects&Premiere Proに苦戦している、野地(トップ画)である。

苦戦など日常茶飯事ではあるのだが、その中でも特に記憶に残っている苦戦といえばcordovaによるandroidのアプリ開発(現在進行形……)と、このBlogを作る時に発生した凶悪なバグだ。

そのバグというのが今回の記事で扱う問題、つまり「独自テーマのfunction.phpを変更した後にエラー画面から動かなくなった」というものである。

Web系の知識があるor勉強して独自のテーマを作る人は多いが、そんな人がブチ当たるであろうバグの中でもトップクラスに恐怖を感じさせるこのバグ。

もちろん記事にするくらいなので自分も経験済みであるが、ネットで他の人が書いている方法とは違う方法でバグを解決したので、同じような症状で悩んでいる人のためにもその方法をここに載せてみたいと思う。

この方法を試すべきケース&条件

始めに断っておくが、今回書かせていただく解決方法は万人が実行できるものではない可能性がある。
また、他のBlogに書いてある方法のほうが簡単に問題解決できる場合もあるかと思うので、この方法を試すべきケースと条件をここに書いておく。
是非、今回の方法を試す前に読んでおいて欲しい。

ケース

  • 使用しているサーバーのファイルへ直接アクセス・変更・アップロードし直しができない。
  •  →できるなら、直接アクセスして正しいfunction.phpをアップロードし直そう。
  • function.phpを編集した直後にエラーが発生した。
  •  →今回の記事で説明するのはfunction.phpが原因のエラーを直すための方法なので、function.phpをいじった覚えがなければ他のエラーが原因である可能性が高い。

条件

  • function.php自体の修正方法は分かるor以前の状態に戻せる。
  •  →この記事ではfunction.phpの内容について触れない。正しい設定の仕方は公式フォーラムなどで調べよう。
  • サーバーからsqlがエクスポーできる&サーバーにsqlをインポートできる。
  •  →最重要条件。今回の解決方法に使用するので、レンタルサーバーにアクセスして可能か調べておこう。
  • 低性能ではないパソコン&sqlを編集できるエディタを所持
  •  →人によって異なるが、非常に重いsqlデータを編集することになる。ちなみに自分はBracketsで編集したが、Dreamweaverでは重すぎて開かなかった……

原因と症状

原因はテーマのfunction.phpの編集ミスである。

実はテーマファル自体が作用しているのは閲覧者が見る実際のページ部分のみならず、ダッシュボードなどの管理画面も含まれている。スタイルシートなどは別のものが読み込まれているようであるが、function.phpにエラーが発生すると管理画面にも正常にアクセスできなくなり、画面にはエラー文(もしくは真っ白の画面)が表示されるのみである。


エラー画面例

今回の問題に該当するのがこんな画面。実際のサイトにアクセスしようが管理画面にアクセスしようがこの画面が表示される。

つまりなにが恐ろしいかというと、管理画面から行う「外観→テーマの編集」や「外観→テーマ」からのテーマファイルのアップロードができないということだ。


エラーを目の当たりにした人予想図

そらこんな顔になりますわ。

解決への準備

まず、レンタルサーバーへアクセスし、なんとかfunction.phpファイルをいじれないか試みる。

直接function.phpがいじれれば話が早いどころか、これ以降に書く解決方法を実施する必要はない。是非、修正したfunction.phpをアップロードし、管理画面へ改めてアクセス、感動の再会を果たそう。自分はこれができなかったので相当悩んだ。

無理ならば、データベースのデータであるsqlをエクスポートする

データベースのバックアップ用にsqlを吐き出す機能はwordpressを使用できるようなサーバーであれば大抵ついている(気がする。付いてなかったら申し訳ない)。
ここからsqlファイルを自分のパソコンのデスクトップにでも保存しよう。

ちなみに記事の量などにもよるが、そこらのhtmlやjavascriptなどより重いデータを扱うことになる。自分がエクスポートした時は、あまり記事を書いてないにもかかわらず1メガ近かった。
それと、メモ帳などで開くと文字化けが起こるので(それでも作業できなくないが)他のエディタを使おう。

解決方法

sqlファイルが保存できたら、そのsqlファイルをエディタで開き、文字検索機能で問題のテーマ名を検索しよう(このブログに使われているテーマ名を例に出せば「odd_codes」といった具合に)。

多分、ブログの中で自分のテーマファイル名をバンバン書いているorありふれた名前でない限り、9箇所くらいがヒットするかと思われる。もしそれ以上ヒットしたら、INSERT INTO `wp_options` VALUESという文が括っていると思われる範囲内の部分のみが今回のターゲットだ。

この部分を他のインストールされているテーマファイル名or適当なアルファベットに書き換える。
この作業により、現在適用されている問題のテーマを強制的に他のテーマ(もしくは存在しない架空のテーマ)に変更することが可能だ。

そしてこのsqlファイルを保存し、元のレンタルサーバーへインポートすれば、管理画面へアクセスできるようになっているはずである。
もし適当なアルファベットを入力した場合はテーマファイルが存在しないため、「テーマファイルが壊れているので~」的な警告がでるものの、管理画面へのアクセスはできるようになる。

アフターケア

管理画面へアクセスできるようになったら自分のパソコンにある正しいfunction.phpを含んだテーマファイルをアプロードし直そう。

もしもう間違えない自身があれば外観→テーマの編集へ飛び、右上の編集するテーマを選択から問題のテーマを選択、function.phpを編集してもいい(エラーが再発するとまた上記の手順を踏み直すことになるため、あまりオススメしない)。

そして、テーマを変更する以外にもテーマ名が関係している何か(こればっかりはうまく説明できない)が変更されている可能性があるので、何かテーマ関連で変なところがあったら何とかして直そう(無責任な回答で申し訳ない)。ちなみに、当Blogでは今のところ後遺症が見られないので、なんとかなっているハズである。

まとめ

繰り返しになるが、タイトルにある通り、これは最終対処法である。

細かくバックアップはとっておき、尚且つfunction.phpをweb上で直接編集、反映しなければこの問題は起きない。

wordpressにも人間の病のようなものが存在するのである。
「解決方法」のみならず「予防」の知識も蓄えるのがサイト運営者としての心構えなのだ。

まぁ、そんなこと書いておいて、自分が予防ができていないからこんな記事を書いているのだけれども(笑)

Comments

  1. ゆき より:

    今同じ状況になってしまってパニックでこのサイトを見つけて少し安心出来ました。
    でも死にそうです。

    • noji より:

      ゆきさん

      コメントありがとうございます!
      このエラーは焦りますよね……サーバーによって対処法も様々なので、色々な情報を調べて試してみてください!
      復旧できることを祈っております!

コメントを付ける

入力エリアすべてが必須項目です。

内容をよくご確認の上、送信してください