过滤器执行期间的调试输出不起作用

时间:2014-01-25 作者:Caesar Kabalan

我正在开发我的第一个Wordpress插件,并且正在开发我的第一个自定义帖子类型。我希望提供一些调试输出,以便查看需要处理的数据类型。

我有以下代码(根据大小剪了一些代码):

class MyPlugin_Admin {

    ... SNIP ...

    private function __construct() {
        ... SNIP ...
        add_filter( \'wp_insert_post_data\', array($this, \'adjust_cpt_data\'), 10, 2);
    }

    public function adjust_cpt_data($data, $postarr) {
        var_dump($data);
        echo "###########################################";
        echo "###########################################";
        echo "###########################################";
        echo "###########################################";
        echo "###########################################";
        echo "###########################################";
        echo "###########################################";
        echo "###########################################";
        echo "###########################################";
        echo "###########################################";
        echo "###########################################";
        echo "###########################################";
        //d($data);
        //dd($postarr);
        return $data;
    }

    ... SNIP ...

}
我试过使用各种不同的输出。d()和dd()函数来自调试栏和Kint调试器。它们也不起作用。如果我在add\\u filter()下面添加一些调试代码,这些代码可以正常工作,但不能在adjust\\u cpt\\u data()中。在这个函数中,我无法将数据输出到屏幕。

我已经能够验证此代码是否正在运行,因为如果我删除“return$data;”第行,自定义post数据没有正确更新,它只是用旧数据刷新。

请任何人提供有关这是为什么以及我如何将一些调试输出打印到屏幕上的见解。

作为补充说明,我意识到通过查看WP Codex可以获得$data和$postarr的内容,但当我需要调试自己的代码时,我将不可避免地再次遇到这个问题。

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

你需要终止脚本。添加die; 在您的var_dump.

WordPress post提交操作在post/redirect/get 道德原则您没有看到输出的原因是页面已重新加载。也就是说,您发布表单,表单得到处理,页面被重定向回自身,但没有$_POST 数据这有助于防止“重复提交”。

您必须终止脚本以防止重定向,否则最终看到的页面不是您期望看到的输出页面。

你应该能够log errors to a file 如果您使用error_log 或者研究一些更复杂的调试工具。

结束

相关推荐

调用xdebug帮助器函数的最佳位置?

现在,我把下面的代码放在任何我认为会出错的地方。/** xdebug helper */ error_reporting(E_ERROR); ini_set(\"display_errors\", 1); ini_set(\"html_errors\", 1); 我应该在哪里包含此代码,以便始终在每个页面上调用它?