所以你的代码在一个类中,假设它看起来像这样。。。
<?php
class WPSE82245
{
public function action_init()
{
// do stuff
}
}
现在你试着把它挂在某个东西上。。。
add_action(\'init\', \'array(\'WPSE82245\', \'action_init\'));
当
init
钩子激发,WordPress尝试调用您的方法。这就像你写下这个。。。
WPSE82245::action_init();
但是PHP不喜欢这样,因为您没有声明您的方法
static
, 也就是说,可以在没有容器类实例的情况下使用(如上面的示例)。
这很有道理,如果您使用$this
用你的方法?静态调用它会导致运行时错误$this
正在对象上下文之外使用。
您可以通过声明方法静态来删除错误。。。
<?php
class WPSE82245
{
public static function action_init()
{
// do stuff
}
}
或者使用类的实例作为数组的第一个元素
add_action
.
<?php
class WPSE82245
{
public function action_init()
{
// do stuff
}
}
$cls = new WPSE82245();
add_action(\'init\', array($cls, \'action_init\'));
以上只是一个例子
many 不同的
ways 在WordPress主题/插件中实例化类。