WordPress でのデバッグ

どのプロジェクトでもPHP コードのデバッグは共通ですが、WordPress にはプロセスの簡素化目的にデザインされた専用のデバッグシステムと、コアやプラグイン、テーマに共通の標準化されたコードが備わっています。このページでは WordPress のさまざまなデバッグツールと、コードの生産性を向上し、同時に全体の品質を改善して相互運用を加速する方法について説明します。

注意: 一般のアカウントではプラグインやテーマの WP_DEBUG は必須ではありませんが、プラグインやテーマを公開する開発者はコードの作業中に WP_DEBUG モードを使用することを強く推奨します。互換性のないプラグインやテーマはエラーや通知、警告を出力します。 WP_DEBUG を有効にして作業する他の開発者はこのような行儀の悪いプラグインやテーマを使いません。またエラーを含むテーマは公式 WordPress ツールを介した登録の対象になりません。

WP_DEBUG

WP_DEBUG /en は WordPress を「デバッグ」モードに切り替える際に使用する PHP の定数 ( 永続的なグローバル変数 )です。デフォルトは false で、通常は WordPress の開発環境の wp-config.php ファイル内で true に設定します。

define( 'WP_DEBUG', true );
define( 'WP_DEBUG', false );

注: 上の例の値「true」や「false」はブール値 (true または false) のため、引用符 (‘) で囲みません。定数 ‘false’ を指定すると true として解釈されるため注意してください。引用符は値をブーリアン型でなく文字列型にします。

WP_DEBUG や他のデバッグツールを本番環境で使用することは推奨されません。これらはローカルのテスト環境やステージング環境での使用を想定しています。

トップ ↑

PHP のエラー、警告、通知

WP_DEBUGを有効にすると、すべての PHP エラー、警告、通知が表示されます。通常の PHP の動きであれば、重要なエラーのみが表示され、エラーに達すると恐怖の「真っ白」画面が表示されます。

PHP の通知や警告は、コードは壊れてはいないものの PHP 内部の適切なデータ検証ルールに準拠しない場合に表示されるエラーメッセージです。これらの警告は、関連するコードが発見されれば修正は容易であり、また修正されたコードはほとんど常にバグに強く、保守しやすくなります。

トップ ↑

非推奨の関数と引数

WP_DEBUG を有効にすると、サイトで使用されている非推奨の WordPress 関数および引数についての通知が表示されます。非推奨の関数や引数はまだコアのコードで提供されていますが、近い将来には削除される予定です。一般に非推奨の通知は、代替として利用可能な新しい関数についても示します。

トップ ↑

WP_DEBUG_LOG

WP_DEBUG_LOG は WP_DEBUG と一緒に使用して、すべてのエラーをディレクトリ wp-content 下のログファイル debug.log に保存します。これはあとですべての通知を確認したり、画面の外で生成される通知を確認する場合に便利です(たとえば AJAX リクエスト中や wp-cron 実行中など)。

注意: この状態で PHP のビルトイン関数 error_log() を使用すると wp-content/debug.log に出力できます。これはたとえば AJAX のイベントをデバッグする際に便利です。

define( 'WP_DEBUG_LOG', true );

注: WP_DEBUG_LOG が動作するには WP_DEBUG に true を設定して有効化する必要があります。WP_DEBUG_DISPLAY は独立して無効化できます。

トップ ↑

WP_DEBUG_DISPLAY

WP_DEBUG_DISPLAY も WP_DEBUG と一緒に使用してデバッグメッセージを HTML ページ内部に出力するかどうかを制御します。デフォルトは「true」で、生成されたエラーや警告をページに表示します。「false」を設定するとすべてのエラーは表示されません。この設定は WP_DEBUG_LOG と組み合わせて使用し、あとでログファイルでエラーを確認してください。

define( 'WP_DEBUG_DISPLAY', false );

注: WP_DEBUG_DISPLAY が動作するには WP_DEBUG に true を設定して有効化する必要があります。なお WP_DEBUG_LOG は独立して制御できます。

トップ ↑

SCRIPT_DEBUG

SCRIPT_DEBUG はデバッグに関連する定数で、通常 WordPress にロードされる「縮小版」コアCSS や JavaScript ファイルの代わりに「開発版」を使用します。組み込みの .js ファイルや .css ファイルを変更してテストする場合に便利です。デフォルトは「false」です。

define( 'SCRIPT_DEBUG', true );

トップ ↑

SAVEQUERIES

SAVEQUERIES 定義はデータベースクエリを配列に保存して表示し、クエリの解析を支援します。「true」を設定して有効化すると、各クエリが実行時間、呼び出し元の関数と共に保存されます。

define( 'SAVEQUERIES', true );

配列はグローバル $wpdb->queries 内に保存されます。

注意: この設定はサイトのパフォーマンスに影響を与えます。デバッグ時以外は無効化してください。

トップ ↑

デバッグのための wp-config.php 例

次のコードをファイル wp-config.php に挿入するとすべてのエラー、通知、警告が wp-content ディレクトリ下のファイル debug.log に出力されます。画面へのエラー表示は抑止されるため、生成されたページはデバッグメッセージで邪魔されません。

// WP_DEBUG モードを有効化
define( 'WP_DEBUG', true );

// /wp-content/debug.log ファイルへのデバッグログの出力を有効化
define( 'WP_DEBUG_LOG', true );

// エラーと警告の画面への表示を無効化
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

// 「開発版」のコア JavaScript と CSS ファイルを使用 (これらのコアファイルを変更する場合のみ必要)
define( 'SCRIPT_DEBUG', true );

注意: このコードはファイル wp-config.php 内の /* That’s all, stop editing! Happy blogging. */ より に挿入してください。

トップ ↑

デバッグプラグイン

WordPress のデバッグを助ける多くの素晴らしいプラグインがあります。これらは特定のコンポーネント、または全体に関してより多くの内部情報を出力します。いくつか例を挙げます。Debug BarLog Deprecated NoticesTotal Security

トップ ↑

履歴

WordPress 3.1 以前には STYLE_DEBUG 定数が JavaScript を除く CSS ファイルに対象を限定して SCRIPT_DEBUG と同じ働きをしていました。WordPress 3.1 で2つの定数は SCRIPT_DEBUG に統合され、両方の縮小版ファイルに働くようになりました。

トップ ↑

外部リソース

この記事は役に立ちましたか ? どうすればさらに改善できますか ?