我正在编写一个插件,我的大部分代码都封装在类中,除了在我不加载主插件类时调用的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);重新安装插件文件,重命名函数,但这无助于。。。你知道怎么回事吗?
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()中有一个输入错误,显然把事情搞砸了(仍然不知道为什么它尝试多次加载所有内容-我认为这与函数死机的事实有关)。