每次我激活插件时,都会收到此消息:
该插件在激活期间生成了80个字符的意外输出。如果您发现“标题已发送”消息,联合供稿问题或其他问题,请尝试停用或删除此插件。
我能够抑制该消息的唯一方法是将激活函数代码包装在 if 语句中(请参阅下面的代码段)。
这是我收到上述错误时的插件代码片段:
function myPlugin( $post ) { echo "Whatever is here throws an unexpected output alert when the plugin isa activated"; } register_activation_hook( __FILE__, 'myPlugin' );
接下来,将函数包装在 if 语句中的插件中;如上所述,它抑制了先前的错误:
function myPlugin( $post ) { global $pagenow; if ( is_admin() && $pagenow !== 'plugins.php' ) { echo "No more alerts when its wrapped this way"; } } } register_activation_hook( __FILE__, 'myPlugin' );
真正导致该错误的原因是什么,以及如何在不遇到问题的情况下有效地使用自己的逻辑完成我的插件?
有没有更好的方法来解决这个问题?
我认为这里可能有两个问题引起了问题。首先,我认为在调用插件激活挂钩时,wordpress不会期望任何输出,因此它可能对此有所抱怨。其次,插件激活挂钩在wordpress程序流程中相当早就被调用,因此,它很可能在发送标头之前被调用。如果在调用之前生成了ANY输出,header()则PHP通常会抱怨。
header()
通常,插件激活例程是为插件的基本设置,对诸如此类set_option()之类的调用保留的。
set_option()