WordPress插件-错误“插件在激活时生成2890个字符的意外输出”

时间:2019-10-11 作者:Kristine Kristensen

我偶然发现插件的激活错误,我正在开发,似乎无法删除它。错误为“插件激活时生成2890个字符的意外输出”。我的插件的目的是查看网站上的横幅,其中包含正在发生的事件的信息。显示错误消息后,横幅和功能都可以正常工作。

我的插件被拆分为多个文件。我在它们各自的文件中有功能,在另一个单独的文件中有视图/HTML。我在php脚本中添加了一个错误日志,它会返回横幅的HTML。

我曾尝试将html转换为Heredocs,但没有成功地消除错误。

关于如何解决激活错误,你们有什么建议吗?

感谢您抽出时间。

向克里斯汀问好

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

不幸的是,core只有在显示整个输出时才提供字符串长度。但是,您可以通过在激活时将这些意外字符(从输出缓冲区)转储到文件中来找到它们是什么。尝试添加此插件(当然,在您激活的插件之外,例如在中的PHP文件中/wp-content/mu-plugins/)

<?php 
add_action( \'activated_plugin\', \'debug_plugin_output\', 10, 2 );
function debug_plugin_output( $plugin, $network_wide ) {
    $output = ob_get_contents();
    $file = WP_CONTENT_DIR . \'/plugin-output.txt\';
    if ( file_exists( $file ) ) {unlink( $file );}
    error_log( $output, 3,  $file);
}
激活后,您可以检查/wp-content/plugin-output.txt... :-)

或者,您可以直接转储输出缓冲区并强制退出(这将短路多个激活并阻止WordPress重定向回插件屏幕):

<?php 
add_action( \'activated_plugin\', \'debug_plugin_output\', 10, 2 );
function debug_plugin_output( $plugin, $network_wide ) {
    $output = ob_get_contents();
    if ( !empty($output) ) {
        echo "Activation of plugin \'" . $plugin . "\'";
        echo " generated " . strlen( $output ) . " characters of unexpected output:<br><br>";
        echo "<textarea rows=\'100\' cols=\'40\'>" . $output . "</textarea>";
        exit;
    }        
}

SO网友:Kristine Kristensen

非常感谢您的帮助,我意识到在插件文件的函数之外有一个include()语句,从而解决了这个问题。然后,我将include()语句移动到它们自己的函数中,从而解决了激活错误:D

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。