wordpressでデバック出力

ドメイン移行したら「Contact Form 7」が動かなくなった!
・・・orz
ちょっと疲れ気味になりつつ、頑張るしかない。

で格闘した結果、新しくお問い合わせのエントリーを作成して、既存のものをそこにコピーしたら動き始めた。ちょっと不本意だけど結果オーライで手打ちにします。

ただし、その過程で今後役に立ちそうなデバック出力の方法をgoogle先生から入手したので、ここに投稿します。(ほぼ自分用の備忘録になっいる感は否めない….)

まず、デバックログ出力の設定は、wp-config.phpに下記を追加することで有効となる。これでwp-conent/debug.logが出力されるようになる。(ファイルサイズ肥大化の懸念があるので、logrotageの設定をしたほうが良さそう)

/**
 * 開発者へ: WordPress デバッグモード
 *
 * この値を true にすると、開発中に注意 (notice) を表示します。
 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
 */
define('WP_DEBUG', true);
if (WP_DEBUG) {
        define('WP_DEBUG_LOG', true);
        define('WP_DEBUG_DISPLAY', false);
        @ini_set('display_errors', 0);
}

この場合、画面には余計なものは出力しない設定です。ランニング中のサイトやAjaxなどでエラーになってしまう場合はこの設定でしょう。

ただし、
これだけだと、変数の値を見られない。

すぐに見たい場合は、

print("<pre>");
print_r($val);
print("</pre>");

とすれば見ることができる。
(こういうことを平気で、DoCoMo公式サイトでやっていたような気もするが…)

でもこれだとちょっと無理やりすぎるので、これもログファイルに書き出せるようにした方が良い。

下記サイトを参考にデバック出力を実装。
WordPressの簡単なデバッグ出力関数
PHPでprint_rの出力データをファイルに保存する

現在利用しているテンプレートのfunction.phpに下記のような関数を追加する。

function my_log_message($output, $path = null)
{
        if (is_array($output)) {
                ob_start();
                print_r($output);
                $str = ob_get_contents();
                ob_end_clean();
        } else {
                $str = var_export($output, true);
        }
        $path = isset($path) ? $path : TEMPLATEPATH . '/log.txt';
        $fp = fopen($path, 'a');
        fwrite($fp, "{$str}\n");
        fclose($fp);
}

これをデバック出力させたい場所へ下記のように記述する。if (DEBUG)は任意。
自分はメール送信のトラブルだったので、wp-includes/pluggable.phpの関数wp_mail()内に追加し、$phpmailerの設定状況を確認するのに使用した。

        do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) );

        if (DEBUG) {
                my_log_message($phpmailer);
        }
        // Send!
        try {
                $phpmailer->Send();
        } catch ( phpmailerException $e ) {
                return false;
        }

実はこういうの標準で用意されていたりしてね。
俺がWordpressの使い方を良くわかっていないのが、一番の問題だったりして!

注意:これテンプレートを変更かつ、DEBUG有効化でエラーになるね。失礼です。

One thought on “wordpressでデバック出力

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>