我每次激活插件时都收到此消息:
该插件在激活期间生成了80个字符的意外输出.如果您注意到"已发送标头"消息,联合供稿问题或其他问题,请尝试停用或删除此插件.
我能够抑制消息的唯一方法是将我的激活功能代码包装在if语句中(请参阅下面的代码片段).
这里,当我收到上述错误时,我的插件代码片段:
function myPlugin( $post ) {
echo "Whatever is here throws an unexpected output alert when the plugin isa activated";
}
register_activation_hook( __FILE__, 'myPlugin' );
Run Code Online (Sandbox Code Playgroud)
接下来,我在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' );
Run Code Online (Sandbox Code Playgroud)
究竟是什么导致了这个错误,我怎样才能有效地完成我的逻辑插件而不必遇到它?
有没有更好的方法来处理这个?
T.T*_*dua 26
1)你echo在错误的地方做输出(如或等).
admin仪表板中输出消息吗?- admin_notices在那里使用钩子和输出......您想在前端输出消息吗?-找到钩子适当的地方(如the_content或wp_footer或其他).
不要在register_activation_hookWordPress标准挂钩内外输出任何内容,没有人应该这样做.**
2)如果你没有故意做任何输出,那么可能php会发生一些错误?如果是这样,暂时放入此代码functions.php,然后激活插件 - 您将看到错误.
define('temp_file', ABSPATH.'/_temp_out.txt' );
add_action("activated_plugin", "activation_handler1");
function activation_handler1(){
$cont = ob_get_contents();
if(!empty($cont)) file_put_contents(temp_file, $cont );
}
add_action( "pre_current_active_plugins", "pre_output1" );
function pre_output1($action){
if(is_admin() && file_exists(temp_file))
{
$cont= file_get_contents(temp_file);
if(!empty($cont))
{
echo '<div class="error"> Error Message:' . $cont . '</div>';
@unlink(temp_file);
}
}
}
Run Code Online (Sandbox Code Playgroud)
jay*_*lee 16
我认为这里可能存在两个导致问题的问题.首先,我不认为wordpress在调用插件激活挂钩时需要任何输出,所以它可能会抱怨.其次是在wordpress程序流中很早就调用了插件激活挂钩,因此,它可能在发送标头之前被调用.如果在调用之前生成了任何输出,header()那么PHP通常会抱怨.
通常,插件激活例程被保留用于插件的基本设置,对诸如此类set_option()的事物的调用.
我和这个问题打了很长时间.通常,这是由开始<?php标记之前或结束?>标记之后的空格或换行引起的.一旦我删除了这些,错误就消失了.
另外,不要假设任何事情GET,POST,COOKIE和REQUEST变量.始终先使用isset()或检查empty().
小智 5
在我的情况下,这是由于未定义的索引,只需启用调试日志以检查导致它的原因,然后您就可以轻松解决它。
对于那些不知道如何启用调试日志的人,请在 wp-config.php 中添加这些行:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', true );
define( 'WP_DEBUG_LOG', true );
Run Code Online (Sandbox Code Playgroud)
您可以在 wp-content 中创建的调试文件中正确查看错误
| 归档时间: |
|
| 查看次数: |
30922 次 |
| 最近记录: |