为什么add_action仅适用于functions.php而不是插件?

时间:2013-09-02 19:58:12

标签: php wordpress plugins woocommerce

当我将代码放到functions.php

开始
add_action( 'woocommerce_order_status_completed', 'do_something' );
here is my code

有效!但是当我把它放在plugin

中时
if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {

    if ( ! class_exists( 'WC_Some_class' ) ) {

    class  WC_Some_class {
            public function __construct() {
            add_action( 'woocommerce_order_status_completed', 'do_something' );
}
script ...

}
}
// finally instantiate our plugin class and add it to the set of globals
        $WC_Some_class = new WC_Some_class();
    }
}

这不起作用。为什么?

1 个答案:

答案 0 :(得分:3)

这是其中一个例子,通过删除代码并对删除密钥过于热心,导致丢失相当重要的信息。

然而,我会在黑暗中捅一下并假设你正在将函数从functions.php移到INTO这个类中。因此,你的add_action必须知道它需要调用类的函数(方法),而不是全局定义的函数。

尝试:

add_action( 'woocommerce_order_status_completed', array(&$this, 'do_something') );