致命错误:无法重新声明ADMIN_NOTICE()

时间:2013-04-05 作者:Ewout

我正在编写一个插件,我的大部分代码都封装在类中,除了在我不加载主插件类时调用的admin\\u notice回退函数:

class MyClass {
    //Main plugin class
}

if ( $check = true ) {
    $myClass = new MyClass();
} else {
    add_action( \'admin_notices\', \'admin_notice\' );
} 

function admin_notice() {
    echo "plugin not loaded";
}
这在以前是正常工作的,直到我停用并重新激活te插件时突然出错:

Plugin could not be activated because it triggered a fatal error.

Fatal error: Cannot redeclare admin_notice() (previously declared in myplugin.php:12) in myplugin.php on line 14

行号(12和14)表示函数的第一行和最后一行,文件相同。

奇怪的是,当我将函数包装到函数中时,函数存在如下条件:

if ( ! function_exists(\'admin_notice\') ) {
    function admin_notice() {
        echo "plugin not loaded";
    }
}
我得到一个错误,该函数不存在!

我已尝试删除(&A);重新安装插件文件,重命名函数,但这无助于。。。你知道怎么回事吗?

1 个回复
SO网友:Ewout

好的,解决了我自己的问题。。。这可能非常具体,但如果有人发现类似问题:

抓住unexpected output 错误我有另一个功能:

add_action(\'activated_plugin\',\'save_error\');
function save_error(){
    $file = "unexpected-output.txt";
    $fh = fopen($file, \'w\') or die("can\'t open file");
    $error = ob_get_contents();
    fclose($fh);
}
fopen()中有一个输入错误,显然把事情搞砸了(仍然不知道为什么它尝试多次加载所有内容-我认为这与函数死机的事实有关)。

结束

相关推荐