WordPressのfunctions.phpの編集ミスで真っ白のエラー画面が表示された場合の対処法を解説します。
functions.phpはテーマの中でも注意が必要なファイルで、少しでも間違いがあるとエラーになって管理画面に入れなくなってしまいます。
突然管理画面にアクセス出来なくなると焦ってしまいますが、こういう時こそ冷静になって対処しましょう。
目次
functions.phpがエラーになる原因
functions.phpは少しでも間違ったことを書くとエラーになってしまうので、カスタマイズに慣れた人であっても真っ白画面に遭遇することは多々あります。
例えば、以下の2つのコードはどこが違うのかすぐに分かりますか?
1 2 3 4 |
function _test() { return 'テスト'; } add_shortcode('test', '_test'); |
1 2 3 4 |
function _test() { return 'テスト'; } add_shortcode('test', '_test'); |
ぱっと見では分かりづらいですが、空白が半角になっているか全角になっているかの違いがあります。
半角と全角の空白を可視化できるエディタで見るとよく分かります。
上は半角空白が4文字、下は全角空白が2文字になっています。
他にも例を見てみましょう。
これはどこが間違っているか分かるでしょうか?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function _test() { return 'Nintendo Switch'; } add_shortcode('nintendo', '_test'); function _test2() { return 'PlayStation 4'; } add_shortcode('sony', '_test2'); function _test() { return 'Xbox One X'; } add_shortcode('microsoft', '_test3'); |
よく見ると「_test」という関数が1行目と11行目で2回定義されています。
同じ名前の関数を定義してはいけない決まりなので、エラーを回避するためには別の名前を付けなければなりません。
functions.phpでエラーが発生したらWordPressを再インストールするような方もいますが、そこまでしなくても簡単に復旧できるので次からはその方法について解説していきます。
functions.phpの編集ミスによるエラーの対処法
今回は、わざとfunctions.phpをエラーにするために間違ったコードを書きます。
WordPressにデフォルトで入っているテーマ「twentyseventeen」の子テーマ「 twentyseventeen-child」を作成し、その子テーマのfunctions.phpの内容が以下であったと仮定して話を進めます。
1 2 3 4 5 6 7 8 9 10 |
<?php add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' ); function theme_enqueue_styles() { wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); } function _test() { return 'テスト'; } add_shortcode('test', '_test'); |
エラー箇所を特定する場合
エラー画面にはfunctions.phpのエラー箇所を特定するためのヒントが書かれています。
何やら8行目あたりでシンタックスエラーになっているのが問題のようです。
functions.phpを確認したいのですが、管理画面にはアクセスできません。
こういった場合はFTPソフトを使って一旦ローカル環境にfunctions.phpをダウンロードしましょう。
ダウンロードしたファイルを開いて8行目を確認してみます。
8 |
return 'テスト'; |
よく見ると空白が全角になっているようです。
全角空白を半角空白に修正してファイルをアップロードします。
すると、エラーは解消されてWordPressの画面が正常表示できるようになりました。
もちろん管理画面にもアクセスできます。
エラー画面で表示された行番号に必ずエラーがあるわけではありませんが、行番号とエラーメッセージを頼りにその周辺を見るとエラーを特定できる場合が多いです。
また、詳細なエラー箇所が分からなくても追加したコードに問題がありそうな場合は、その部分を一旦削除してください。
7 8 9 10 |
function _test() { return 'テスト'; } add_shortcode('test', '_test'); |
エラーになった原因は後でゆっくりと調べてみましょう。
急いでWordPressを復旧させる場合
編集した部分がよく分からない方もいるかも知れません。
正常に動作するfunctions.phpのバックアップが手元にあれば、それをアップロードするだけでOKです。
バックアップを取っていなかった場合はテーマを削除する方法もあります。
テーマを削除する前の注意点
テーマを削除するとカスタマイズした内容が全て消えるので削除前に必ずテーマフォルダをバックアップしてください。
FTPソフトで使用していたテーマのフォルダ(今回は「twentyseventeen-child」)を削除します。
WordPressのインストール場所/wp-content/themes
すると、デフォルトのテーマが適用された状態でWordPressにアクセスできるようになります。
管理画面で「外観 > テーマ」をクリックしてテーマ画面を開くと次のようなメッセージが確認できます。
「使用中のテーマが壊れているため、デフォルトのテーマに戻します。」
ひとまず復旧はできたので慌てる必要はありません。
functions.phpの問題が解消できたら「twentyseventeen-child」をアップロードしてそのテーマを有効化すれば元通りになります。
まとめ
WordPressのfunctions.phpを編集ミスして真っ白のエラー画面になってしまった場合の対処法について解説しました。
functions.phpに手を加える場合は、管理画面から直接編集するとアクセス出来なくなった時に慌ててしまうので、FTPソフトを使って編集することをおすすめします。
FTPソフトを使ってファイルを編集する前にバックアップを取っておけば、もしエラーになっても編集前のファイルをアップロードするだけでエラーを解消することができます。