删除调用公共静态函数的筛选器

时间:2017-04-03 作者:dafyddPrys

我想删除从插件类的公共静态函数中添加的过滤器。

过滤器在此处定义(在WCSG_Cart 类,插件的一部分):

public static function init() {
  add_filter( \'woocommerce_cart_item_name\', __CLASS__ . \'::add_gifting_option_cart\', 1, 3 );
}
这个类是一个单例类-WCSG_Cart::init() 在定义类后立即调用。

在我的主题中functions.php 文件,我有

remove_filter(\'woocommerce_cart_item_name\', array( WCSG_Cart::init(), \'WCSG_Cart::add_gifting_option_cart\'), 99);
这似乎没有什么区别。

per this post suggestion, 我试着把我的remove_filter 调用函数并将其添加到init 但这并没有起作用:

add_action(\'init\', \'do_something\', 99);
function do_something() {
  remove_filter(\'woocommerce_cart_item_name\', array( WCSG_Cart::init(), \'WCSG_Cart::add_gifting_option_cart\'), 99);
}
我还尝试将类名用作字符串(\'WCSG_Cart\') 并删除WCSG_Cart:: 从函数名中删除,没有任何效果。

我在网上找不到任何使用remove_filter 在使用__CLASS__ 变量

感谢您的帮助!

1 个回复
最合适的回答,由SO网友:Shivanand Sharma 整理而成

remove_filter 应该以与add_filter, 因此,在这种情况下,您可能需要替换99 具有1, 3

remove_filter( \'woocommerce_cart_item_name\', …, 1, 3 );