在页面内部而不是标题之前显示自定义调试信息

时间:2017-03-14 作者:sineverba

我正在学习在Wordpress中开发插件。

我会在页面内部呈现自定义调试信息,而不是在标题之前(所以我认为这是一个挂钩问题?)。

这是我的插件代码:

if (is_admin()) {

    require_once SVERBA__PLUGIN_DIR.\'class.sverba-admin.php\';
    add_action( \'init\', array( \'SverbaAdmin\', \'init\' ) );


    if (SVERBA__DEBUG > 0) {

        add_action( \'init\', array( \'SverbaAdmin\', \'printDebug\' ) );

    }

}
这是class.sverba-admin.php 代码(仅部分,非全部):

public function printDebug() {

    echo \'<div class="wrap">\';
        echo \'<h1>Variabili</h1>\';
        echo \'<ul>\';
            echo \'<li>\'.var_dump(self::$initiated).\'</li>\';
        echo \'</ul>\';
    echo \'</div>\';

}
它可以工作,但调试信息打印在头部之前。我希望它们在页面中,例如在类为“wrap”的div中

enter image description here

1 个回复
SO网友:Ihor Vorotnov

不要将任何调试信息直接打印到页面中。WordPress提供wp-content/debug.log 您可以使用的文件。

在您的wp-config.php

define( \'WP_DEBUG\', true ); // turn debug mode on
define( \'WP_DEBUG_DISPLAY\', false ); // do not display errors
define( \'WP_DEBUG_LOG\', true ); // save errors to wp-content/debug.log
define( \'SAVEQUERIES\', true ); // save queries for debug
将此便捷功能添加到functions.php 或插件文件

/**
 * Simple debug trace to wp-content/debug.log
 * @usage _log( $var );
 */
if ( ! function_exists( \'_log\' ) ) {
    function _log( $log ) {

        if ( true !== WP_DEBUG ) {
            return;
        }

        if ( is_array( $log ) || is_object( $log ) ) {
            error_log( print_r( $log, true ) );
        } else {
            error_log( $log );
        }

    }
}
无论何时需要打印一些调试信息,都可以在代码中使用它

_log( $my_var );
打开wp-content/debug.log 看到你的数据打印在那里。我通常将其作为固定文件保存在IDE(PHPStorm)中。

相关推荐

About Hooks and Filters

嗯,我很难理解动作和过滤器之间的区别。我确实在代码中使用动作,但我是一个新手,甚至连一点过滤器都不知道。我去过codex,以及NickTheGeek、BillErickson、GaryJones等的多个网站,但没有去过vein。如果你能用简单的话告诉我,并举例说明动作、过滤器和挂钩的基本内容和区别。非常感谢。