eliminar filtro que llama a una función estática pública

2

Quiero eliminar un filtro que se agrega desde una función estática pública de una clase de complemento.

El filtro se define aquí (dentro de la clase WCSG_Cart , parte de un complemento):

public static function init() {
  add_filter( 'woocommerce_cart_item_name', __CLASS__ . '::add_gifting_option_cart', 1, 3 );
}

y la clase es una clase singleton: se llama a WCSG_Cart::init() inmediatamente después de definir la clase.

En el archivo functions.php de mi tema, tengo

remove_filter('woocommerce_cart_item_name', array( WCSG_Cart::init(), 'WCSG_Cart::add_gifting_option_cart'), 99);

Lo que parece no hacer ninguna diferencia.

Como por esto tras la sugerencia , he intentado envolver mi llamada remove_filter en una función y agregarla a la acción init y eso no funcionó:

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);
}

También he intentado usar solo el nombre de la clase como una cadena ( 'WCSG_Cart' ) en la matriz, y eliminar el WCSG_Cart:: del nombre de la función, en vano.

No puedo encontrar ningún ejemplo en línea de usar remove_filter en una función que usa la variable __CLASS__ .

Cualquier ayuda es apreciada!

    
pregunta dafyddPrys 03.04.2017 - 12:41

1 respuesta

4

remove_filter debe llamarse con la misma prioridad que add_filter , por lo que en este caso es posible que desee reemplazar 99 con 1, 3

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

    
respondido por el Shivanand Sharma 03.04.2017 - 12:43

Lea otras preguntas en las etiquetas