WordPressのデバッグ方法

構築・開発WordPress

add_filter処理内など、var_dumpが動かない場合に変数の中身が理解らず困ったときの対応方法です。

まず、wp-config.php内にある WP_DEBUGtrue に変更します。

define('WP_DEBUG', true);

続けて、下記コードを追記します。

if ( WP_DEBUG ) {
    // debug.log ファイルに記録
    define( 'WP_DEBUG_LOG', true );
    // ブラウザ上に表示しない
    define( 'WP_DEBUG_DISPLAY', false );
    // ブラウザ上に表示しない
    @ini_set( 'display_errors',0 );
}

functions.php に下記コードを追記します。

if(!function_exists('_log')){
    function _log($message) {
        if (WP_DEBUG === true) {
            if (is_array($message) || is_object($message)) {
                error_log(print_r($message, true));
            } else {
                error_log($message);
            }
        }
    }
}

これでログ出力の準備が整いました。

 

ログを出力したい箇所に _log(); を挿入することで、wp-contentフォルダ内に debug.log ファイルが生成されます。

 

例えば、

function wpcf7_custom_item_error_position( $items, $result ) {
    var_dump($items); 
    return $items;
}
add_filter( 'wpcf7_ajax_json_echo', 'wpcf7_custom_item_error_position', 10, 2 );

これは、filter上でvar_dump出来ず、$items にどんな値が入っているか確認することができません。

function wpcf7_custom_item_error_position( $items, $result ) {
    _log($items); 
    return $items;
}
add_filter( 'wpcf7_ajax_json_echo', 'wpcf7_custom_item_error_position', 10, 2 );

とすることで、$items の中身が、debug.logに出力できます。

このログ出力機能を使用することで、add_filterなどで扱っている内容も確認することができました。

コメント

スポンサーリンク
タイトルとURLをコピーしました