我想在激活主题时运行一个函数。我必须在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_user_func_array()期望参数1有效 回调,课程' My_Class_Name'没有方法 '激活'在 /Applications/MAMP/htdocs/wp-themes/test/wp-includes/class-wp-hook.php 在第288行
如果我使用add_action('after_switch_theme', 'activate' );
我得到了
PHP致命错误:当没有类范围处于活动状态时,无法访问self ::
如何使钩子工作?
答案 0 :(得分:1)
这是一个简单的方法,我让它工作。
final class My_Class_Name {
// some code
public function __construct(){
add_action('after_switch_theme', array( $this, 'activate' ));
}
public function activate() {
file_put_contents(__DIR__.'\de.log','TEST');
}
// more code
}
new My_Class_Name();
这是您可以实例化的另一种方式。
class My_Class_Name{
protected static $instance = null;
public function __construct(){}
public static function get_instance() {
// If the single instance hasn't been set, set it now.
if ( null == self::$instance ) {
self::$instance = new self;
}
return self::$instance;
}
}
My_Class_Name::get_instance();