我想在我的主题被激活时运行一个函数。我必须在php类中添加主题激活挂钩:
final class My_Class_Name {
public static function getInstance() {
if (self::$instance == null) {
self::$instance = new self;
self::$instance->actions();
} else {
throw new BadFunctionCallException(sprintf(\'Plugin %s already instantiated\', __CLASS__));
}
return self::$instance;
}
// some code
add_action(\'after_switch_theme\', array( $this, \'activate\' ));
function activate() {
// some code
}
// more code
}
My_Class_Name::getInstance();
当我激活主题时,会出现以下php错误:
PHP警告:call\\u user\\u func\\u array()要求参数1为有效回调,类“My\\u class\\u Name”在/Applications/MAMP/htdocs/wp-themes/test/wp-includes/class-wp-hook中没有“activate”方法。php在线288
如果我使用add_action(\'after_switch_theme\', \'activate\' );
我明白了
PHP致命错误:没有活动的类作用域时无法访问self::
我怎样才能使钩子工作?
最合适的回答,由SO网友:Welcher 整理而成
看起来您正在将钩子添加到类的主体内部。尝试将其添加到init()
方法,并在实例化后或至少在构造函数中调用它。
我认为问题在于,钩子是在PHP完全读取类之前注册的?
尝试以下操作:
final class My_Class_Name {
function init() {
add_action(\'after_switch_theme\', array( $this, \'activate\' ));
}
function activate() {
}
}
$class = new My_Class_Name();
$class->init();
希望这有帮助!