我想删除从插件类的公共静态函数中添加的过滤器。
过滤器在此处定义(在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__
变量
感谢您的帮助!
最合适的回答,由SO网友:Shivanand Sharma 整理而成
remove_filter
应该以与add_filter
, 因此,在这种情况下,您可能需要替换99
具有1, 3
remove_filter( \'woocommerce_cart_item_name\', …, 1, 3 );