Hallo,
Ich habe das Gefühl dass es seit Wordpress 4.7 schwieriger geworden ist, Filter zu entfernen. Ein Plugin setzt einen Filter:
PHP
class Cart{
const ADD_TO_CART_HANDLER_VARIABLE = 'wpi_variable';
public function __construct() {
add_filter('woocommerce_cart_item_product', array($this, 'translateCartItemProduct'), 10, 2);
}
}
Das ist jetzt der wesentliche Code aus dem Plugin. Den Filter möchte ich entfernen. Früher ging das relativ einfach mit folgendem Hook:
PHP
function remove_hyyan_filter(){
global $wp_filter;
if(isset($wp_filter["woocommerce_cart_item_product"][10])){
foreach($wp_filter["woocommerce_cart_item_product"][10] as $key => $hook){
if($hook["function"][1] == "translateCartItemProduct")
unset( $wp_filter["woocommerce_cart_item_product"][10][$key]);
}
}
}
add_action( 'wp', 'remove_hyyan_filter' );
Komischerweise geht das nicht mehr. Der Filter wird nicht entfernt und ich bekommen auch noch ein Warning ausgegeben:
ZitatNotice: Indirect modification of overloaded element of WP_Hook has no effect in /…/functions.php on line 1193
Zeile 1193 ist diese:
PHP
if($hook["function"][1] == "translateCartItemProduct") unset( $wp_filter["woocommerce_cart_item_product"][10][$key]);
Ich kann mit der Meldung nichts anfangen. Fakt ist, dass es diesen Key in $wp_filter gibt. Im Debug siehts so aus: