WordPressのテストと
デバッグ方法
Tsuyoshi. (@andante0727)
WordBench 静岡
自己紹介
名前 Tsuyoshi. (@andante0727)
職業 Web屋
所属 WordBench 福岡
スキル HTML・CSS・JS・PHP・WordPress ...etc
本日の流れ
1. 基本的なデバッグ
2. デバッグプラグイン
3. テーマとプラグインのチェック
4. テーマユニットテスト
基本的なデバッグ
 wp-config.php
define('WP_DEBUG', false);
define('WP_DEBUG', true);
WP_DEBUGをtrueに設定して、デバッグモードを有効にす
る。(※実運用環境ではfalseにする)
 エラー時の表示例
デバッグモード時 運用モード時
基本的なデバッグ
 デバッグモード
Notice エラーを含むE_ALLレベルのPHPの実行時エラーを
画面上に出力する。
※テーマやプラグインの開発時はデバッグモードの有効化が推
奨されている。
基本的なデバッグ
 PHPにおけるエラーレベルの一部
エラーレベル 説明
E_ERROR
重大な実行時エラー。これは、メモリ確保に関する問題のように復帰できないエラーを示します。
スクリプトの実行は中断されます。
E_WARNING 実行時の警告 (致命的なエラーではない)。スクリプトの実行は中断されません。
E_PARSE コンパイル時のパースエラー。パースエラーはパーサでのみ生成されます。
E_NOTICE
実行時の警告。エラーを発しうる状況に遭遇したことを示す。 ただし通常のスクリプト実行の場合
にもこの警告を発することがありうる。
基本的なデバッグ
 PHPの設定ファイル php.ini
・エラーを画面に出力しない
display_errors = Off
・エラーを画面に出力する
display_errors = On
基本的なデバッグ
 PHPの設定ファイル php.ini
・エラー出力レベルの設定
error_reporting = E_ALL
基本的なデバッグ
 PHPで用意されている関数
・エラー出力レベルの設定
<?php error_reporting( E_ALL ); ?>
・エラー出力の設定
<?php ini_set( 'display_errors', 1 ); ?>
基本的なデバッグ
基本的なデバッグ
 wp-includes/load.php
function wp_debug_mode() {
if ( WP_DEBUG ) {
// E_DEPRECATED is a core PHP constant in PHP 5.3. Don't define this yourself.
// The two statements are equivalent, just one is for 5.3+ and for less than 5.3.
if ( defined( 'E_DEPRECATED' ) )
error_reporting( E_ALL & E_DEPRECATED & E_STRICT );
else
error_reporting( E_ALL );
if ( WP_DEBUG_DISPLAY )
ini_set( 'display_errors', 1 );
elseif ( null !== WP_DEBUG_DISPLAY )
ini_set( 'display_errors', 0 );
if ( WP_DEBUG_LOG ) {
ini_set( 'log_errors', 1 );
ini_set( 'error_log', WP_CONTENT_DIR . '/debug.log' );
}
} else {
error_reporting( E_CORE_ERROR ¦ E_CORE_WARNING ¦ E_COMPILE_ERROR ¦ E_ERROR ¦
E_WARNING ¦ E_PARSE ¦ E_USER_ERROR ¦ E_USER_WARNING ¦ E_RECOVERABLE_ERROR );
}
}
基本的なデバッグ
 wp-includes/default-constants.php
・定数が定義されてない場合のデフォルト値
if ( !defined('WP_DEBUG') )
define( 'WP_DEBUG', false );
if ( !defined('WP_DEBUG_DISPLAY') )
define( 'WP_DEBUG_DISPLAY', true );
if ( !defined('WP_DEBUG_LOG') )
define('WP_DEBUG_LOG', false);
基本的なデバッグ
 PHPの設定とWordPressの設定の関係
display
_errors
WP_DEBUG 画面のエラー出力とエラーレベル
On TRUE E_ALLレベルで画面にエラー表示
On FALSE
E_CORE_ERROR ¦ E_CORE_WARNING ¦ E_COMPILE_ERROR ¦ E_ERROR ¦
E_WARNING ¦ E_PARSE ¦ E_USER_ERROR ¦ E_USER_WARNING ¦
E_RECOVERABLE_ERROR レベルで画面にエラー表示
Off TRUE E_ALLレベルで画面にエラー表示
Off FALSE 画面にエラー表示されない
基本的なデバッグ
 wp-config.php
define('SAVEQUERIES', true);
SAVEQUERIESをtrueに設定する。
$wpdb->queriesに配列としてデータベースへのクエリ情報
を保存。
(実行クエリ・クエリの実行時間・呼び出された関数)
基本的なデバッグ
 footer.php
<?php
if ( current_user_can( 'administrator' ) ) {
global $wpdb;
echo '<pre>';
print_r( $wpdb->queries );
echo '</pre>';
}
?>
基本的なデバッグ
 管理者権限でログイン時にクエリ情報を表示
クエリ情報
基本的なデバッグ
 取り敢えず困ったら…
var_dump();
print_r();
などで値の表示を行うと良い。
デバッグプラグイン
 WordPressのボトルネックを調べるプラグイン
・Debug Bar
・Debug Bar Console
・Debug Bar Extender
デバッグプラグイン
 wp-config.php
define('SAVEQUERIES', true);
define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', false);
Debug Bar Extenderを入れると、管理画面から有効化の
設定を行える。(※ただし Debug Barのインストールは必
要)
デバッグプラグイン
 Debug Barインストール後のサイト画面
admin barに Debug というメニューが追加される
テーマとプラグインのチェック
 テーマとプラグインの信頼性向上の為のチェックツール
・Theme-Check
・Plugin-Check
WP Total Hacks 作者の宮内さんから教えて頂いた情報 
(※ Plugin-Checkを使用する場合、Theme-Checkもインストールしましょう)
テーマとプラグインのチェック
 firegoby
http://firegoby.jp/
宮内さんのブログ
とっても勉強になります!
テーマユニットテスト
 テストデータのインポート
配布されているテストデータをWordPress Importerプラ
グインでインポートし、レイアウトが崩れてないかなどの見た
目のチェックを行う。
http://megumi-manuals.com/
日本語版 インポートテストデータ
をダウンロード
最後に
 是非ご活用を
ご清聴ありがとうございました。

WordPressのテストとデバッグ方法