Je souhaite supprimer un filtre ajouté à partir d'une fonction statique publique d'une classe de plug-in.
Le filtre est défini ici (dans la classe WCSG_Cart
, partie d'un plugin):
public static function init() {
add_filter( 'woocommerce_cart_item_name', __CLASS__ . '::add_gifting_option_cart', 1, 3 );
}
et la classe est une classe singleton - WCSG_Cart::init()
est appelée immédiatement après la définition de la classe.
Dans le fichier functions.php
de mon thème, j'ai
remove_filter('woocommerce_cart_item_name', array( WCSG_Cart::init(), 'WCSG_Cart::add_gifting_option_cart'), 99);
Ce qui ne semble faire aucune différence.
Comme selon cette suggestion de publication , j'ai essayé de regrouper mon appel remove_filter
dans une fonction et de l'ajouter à l'action init
et cela n'a pas fonctionné:
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);
}
J'ai également essayé d'utiliser simplement le nom de la classe sous forme de chaîne ('WCSG_Cart'
) dans le tableau et de supprimer le WCSG_Cart::
du nom de la fonction, mais en vain.
Je ne trouve aucun exemple d'utilisation en ligne de remove_filter
sur une fonction qui utilise la variable __CLASS__
.
Toute aide est appréciée!
remove_filter
est censé être appelé avec la même priorité que add_filter
. Dans ce cas, vous voudrez peut-être remplacer 99
par 1, 3
remove_filter( 'woocommerce_cart_item_name', …, 1, 3 );