WordPressを使用していて「Warning」や「Notice」「Parse error」などがエラーメッセージとして表示されることがあります。
このような警告文、通知、文法ミスという形で表示されるエラーメッセージは、WordPressでデバッグモードの設定が有効になっているためです。
WordPressでデバッグモードを無効にしてエラーメッセージを表示しない
逆に
WordPressでデバッグモードを有効にしてエラーメッセージを表示したい
デバッグモードの設定で表示と非表示にするにはどうすればいいのかやり方を覚えておこうと思います。
WordPressのデバッグモードとは
WordPressのデバッグモードとは、使用してるWordPressのファイルに記述してあるPHPなどの記述ミスなどで、正しく処理できていなかったりする部分をエラーメッセージとして警告してくれて、デバッグ(修正)しやすくできる開発者向け環境のことです。
ワードプレスの独自関数を記述して機能を追加してはみたはいいけど、画面表示を確認するとエラーで不具合が出てしまった。そんな時にはデバッグモードの出番です。
WordPressのデバッグモードを設定して使用すると、関数を記述したエラーの場所の特定がしやすくなるので便利です。
WordPressでデバッグモードを設定する
WordPress でデバッグモードを設定する場合は、PHPの定数を使ってデバッグモードが有効になるようにします。
define( 'WP_DEBUG', trueかfalseにする );
定数のdefineは、プログラム中で書き換えられてしまうと困るような情報を書き換えられないようするときに使用できます。変数とは違い、後で値の更新ができないようにWordPressのデバッグモードでもdefineで設定をします。
そして定数名のWP_DEBUGを使用をした値で、WordPressのデバックモードを有効にするか無効にするかを設定します。
デバッグモードを設定する記述はWordPressの wp-config.php ファイル内で設定します。
wp-config.phpの場所
WordPressでwp-config.phpのファイルがある場所は、WordPressのルートディレクトリ(フォルダ)の直下にあります。
データベースの情報などの重要な記述があるのがwp-config.phpファイルですが、場所さえ覚えてしまえばファイル内の記述は少ないのでデバッグモードを設定する記述は分かりやすいです。
そして「wp-config.php」を開いてデバッグモードの記述をして設定する場所は、「開発者へ: WordPress デバッグモード」から続くコメント下です。
以下からエラーメッセージを表示する場合と非表示にする場合の記述を説明します。
エラーメッセージを表示する
wordpressのデバッグモードでエラーメッセージを表示する場合はdefineの定数名を’WP_DEBUG’にして定数の値をtrueにします。
define( 'WP_DEBUG', true );
‘WP_DEBUG’の記述にはシングルクォーテーションをつけます。値の「true」はシングルクォーテーションで囲まず記述します。
こうしてwp-config.phpでWP_DEBUGをtrueで有効にすると、エラーがある場合にはPHP エラー、警告文、通知が表示されます。「Warning(警告)」や「Notice(通知)」「Parse error(文法ミス)」などですね。
試しにPHPを以下のように記述ミスをしてWordPressのデバッグモードでエラーメッセージ出してみます。
<?php
echo 'test';
?
終了タグがないのでWordPressのデバッグモードで「Parse error」のエラーメッセージが表示されます。footer.phpの12行目あたりで文法エラーですね。
というように、wordpressのデバッグモードでエラーメッセージを表示するには、wp-config.phpにdefine( ‘WP_DEBUG’, true );を記述してください。
ちなみにWP_DEBUGを有効にするとサイトヘルスで致命的な問題と表示されますが、エラー修正が終わってデバッグモードを無効にすれば表示されなくなります。
エラーメッセージを非表示にする
wordpressのデバッグモードでエラーメッセージを非表示にする設定の場合はdefineの定数名を’WP_DEBUG’にして値をfalseにします。
define( 'WP_DEBUG', false );
そうするとWordPressのデバッグモードで有効になって表示されていたエラーメッセージを表示しないようにできます。
デバッグモードをfalseにするときはエラー表示を非表示にしたい場合ですが ‘false’ とシングルクォーテーションをつけて指定しまうと、true として解釈されエラーメッセージが表示されてしまうので気をつけてください。
WordPressのデバッグモードを詳細に設定する
wordpressのデバッグモードはWP_DEBUGでtrueとfalseにするだけではなく、もう少し詳細に設定することができます。
WP_DEBUGをtrueにしたまま、公開ページにはエラーメッセージを表示しないようしたり、公開ページにはエラーメッセージを表示しないけどログとしてファイルに残しておく設定ができます。
画面にはエラーメッセージを表示しない
たとえば公開サイトのエラーをWordPressのデバッグモードで確認したいけど、訪問者がアクセス中なので、画面にはエラーメッセージを表示しないようにする状況は多々あります。
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', false );
wp-config.phpにdefine( ‘WP_DEBUG’, true );と一緒にdefine( ‘WP_DEBUG_DISPLAY’, false );を記述してエラーメッセージを表示しないように設定できます。
WP_DEBUG_DISPLAYの値を「false」で設定するとWP_DEBUGをtrueにしたデバッグモードでもすべてのエラーは表示されません。
WP_DEBUG_DISPLAYを「true」にするとエラーメッセージがページに表示できます。
WP_DEBUG_DISPLAYはWordPressのデバッグモードでエラー内容は確認したいけど、公開ページでは表示したくない場合の設定に適してます。
こうしてエラー内容をページに表示しない場合でも、ログファイルでエラー確認できるようにする設定ができます。以下を読み進めてみてください。
エラーをログファイルには書き出す
WP_DEBUGをtrueでWordPressのデバッグモードをONに設定
WP_DEBUG_DISPLAYをfalseでページにエラーメッセージを表示しない
上記の組み合わせたWordPressのデバッグモードの設定で、ページにはエラーメッセージを完全に表示しないようにできますが、デバッグでエラーを確認できるようにはしたいです。
そんなときはWP_DEBUG_LOGも組み合わせて使用し、エラーをログファイルには書き出せるようにWordPressのデバッグモードを設定します。
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', true );
上のコードはWP_DEBUGでWordPressのデバッグモードが有効になり、WP_DEBUG_DISPLAYがページのエラーメッセージを非表示にします。
そしてWP_DEBUG_LOGをtrueにすることで「ページに表示しないエラーをログファイルには書き出す」というWordPressのデバッグモードの設定です。
ログファイルは、debug.logというファイル名でwp-content下に作成されて全てのエラーが保存されます。
debug.logファイルにエラーが書き出されるので、ファイルが肥大化しないようにこまめに削除するようにしてください。
まとめ
wordpressのデバッグモードでエラーメッセージを表示や非表示にするための設定をまとめておきます。
wordpressのデバッグモードを有効または無効にする場合
WP_DEBUG
define( ‘WP_DEBUG’, trueまたはfalse );
trueで有効、falseで無効
エラーメッセージをページには表示、非表示にする場合
WP_DEBUG_DISPLAY
define( ‘WP_DEBUG_DISPLAY’, trueまたはfalse );
trueで表示、falseで非表示
エラーをログファイルに書き出す場合
WP_DEBUG_LOG
define( ‘WP_DEBUG_LOG’, true );
trueでログファイル(debug.log)にエラーを書き出す