无法使用删除它remove_action()
你写它的方式。
当你把它挂在这里时:
add_action( \'woocommerce_shop_loop_item_title\', array( $this, \'change_title\' ), 10 );
The
$this
表示挂接的函数位于
My_class
. 使用时
remove_action()
您需要传递类的相同实例:
remove_action( \'woocommerce_before_shop_loop_item_title\', array( $instance, \'change_title\' ), 10 );
(其中
$instance
是类的实例)。
问题是该类的实例在其他任何地方都不可用,因为您没有实例化任何内容:
return new My_class();
要删除该操作,需要将类实例放入变量中,然后使用该变量在以后删除它:
$my_class = new My_class();
然后在其他代码中:
global $my_class;
remove_action( \'woocommerce_before_shop_loop_item_title\', array( $my_class, \'change_title\' ), 10 );
另一种选择是,如果
change_title
是
static 然后,您不需要特定的类实例来添加它,也不需要从挂钩中删除它。
因此,将函数设置为静态:
public static function change_title() {
echo \'The title\';
}
然后要挂接静态方法,请执行以下操作:
add_action( \'woocommerce_shop_loop_item_title\', array( \'My_class\', \'change_title\' ), 10 );
这意味着您可以像这样删除它:
remove_action( \'woocommerce_before_shop_loop_item_title\', array( \'My_class\', \'change_title\' ), 10 );
但您的类/函数是否可以或应该是静态的是一个更大的体系结构问题,这将完全取决于您正在做什么。