【WordPress】自作テーマ管理画面の挙動がおかしい時の原因・対処法
自作のオリジナルテーマを使ってWordPressを運用している方であれば、ある日突然管理画面が以下のような挙動をするようになった経験はないでしょうか。
- ログインしようとしても画面に何も表示されない
- 設定を保存しようとすると白い画面になる
- メディアライブラリが読み込まれない
「フロント側は何も問題ないのに…」という方向けに、考えられる原因と対処法を紹介します。
【まず…】既存のテーマだと正常に動作する?
ごくごくまれにですが、WordPressのバージョンによる不具合、サーバを借りている方はレンタルサーバの不具合などによって動作が不安定になっている可能性があります。
まずはオリジナルテーマをまとめたテーマフォルダをデフォルトのテーマに戻し、正常に動作するかどうかをチェックしてみましょう。
オリジナルテーマを戻す場合、FFFTPなどのソフトから、サーバ上にあるテーマフォルダのディレクトリ名をちょっと変更するだけでOKです。
その後、管理画面を表示して問題なく動作するようであれば、オリジナルテーマ側で悪さしている要素があると原因を特定しやすくなります。
【あるある】functions.phpに空白行がある
オリジナルテーマの不具合として、考えられる原因第一位というか、大体「これ」というのが、表題のfunctions.phpの内容です。
管理画面の挙動がおかしいときは、ほぼ間違いなくfunctions.phpの中に不要な空白行が空いてます。
まず、以下のように、PHPの中で空白行があるのは問題ありません。
<?php
// ▼ 空白行
// ▲ 空白行
$test = "test";
echo $test;
?>
問題は以下のようなコード です。
<?php
$test = "test";
echo $test;
?>
<!-- ▼ 不要な空白行 -->
<!-- ▲ 不要な空白行 -->
<?php
$test2 = "test2";
echo $test2;
?>
HTMLタグを記述する際など、何等かの理由で複数のPHPタグを配置してfunctions.phpを運用することはあると思いますが、その際に「見やすくしよう」とPHPタグの間に空白行を置いたりすると、WordPressでは致命的なエラーが発生します。
これはfunctions.phpの末尾や先頭に空白行がある場合も同じです。
表面上ではしっかり動いているように見えますが、WordPressとして機能不全になっている状態と言っても過言ではありません。
functions.phpに不要な空白行がないか、よくチェックしてみましょう。
エラー内容を確認する方法
上記の内容で解決しない場合は、WordPress側でどのようなエラーが起きているか確認するしか、原因究明の手段がありません。
WordPressでエラーの確認(デバッグ)を行う場合、WordPressのうち「wp-config.php」というファイルを編集する必要があります。
wp-config.phpは、以下の場所にあるかと思います。

※ 作業前に必ず、ファイルをコピーするなどして、バックアップを取っておきましょう。
wp-config.phpでデバッグを有効化する
wp-config.phpでデバッグを有効化する場合、以下のドキュメントコメントの下に記述していきます。

何となくわかると思いますが、デフォルトでは「WP_DEBUG」の値が「false」になっています。
(defineは定数を定義するための関数で、ここではWP_DEBUGというグローバル定数を定義している。)
この部分を消して、以下のコードに差し替えてみてください。
// define( 'WP_DEBUG', false );
/** デバッグ用 */
define( 'WP_DEBUG', true );
if (WP_DEBUG) {
define('WP_DEBUG_DISPLAY', true);
}
これは、WordPressのエラー内容を画面上に出力するための設定です。
※画面上にエラーを出すのはセキュリティ上のリスクがあるため、可能な限りすぐに元に戻す(WP_DEBUG_DISPLAY=falseにする)ことを忘れないでください。
あと、念のためブラウザのキャッシュ削除を行っておきましょう。
(キャッシュが残っているとエラーが上手く表示されない場合がある)
上記の状態で不具合の起きている管理画面にアクセスすると、何らかのエラー文が画面上部に表示されます。
大体問題があるファイル名とその行が記載されているので、あとは該当箇所の修正を重点的に行えばOKです。
まとめ
まとめると、WordPressに不具合があるときは、大体オリジナルテーマ内のfunctions.phpが悪さをしていることが多いです。
ただ、functions.phpに問題がない場合もあるため、その場合はwp-config.phpでデバッグを有効化し、細かくエラーチェックしていくようにしましょう。