删除使用 function(){...} wordpress 定义的操作

remove actions defined with function(){...} wordpress

您知道如何删除 Wordpress 中的 actionsfilters(来自在我的例子中是一个插件)当它们被这样定义时:

add_action('action_tag', 函数(){...}); 要么 add_filter('filter_tag', 函数(){...});

它们是在函数 add_actionadd_filter 中定义的,所以我不知道 'function_name' 我应该用它来删除它。

remove_action($tag, 我应该在这里放什么?, $priority);

您说的是 anonymous functions。要从过滤器或操作中删除匿名函数,您必须使用与添加它们时相同的函数体和优先级,如下所示:

// Add it.
add_filter( 'tag', function ( $param ) {
    return $param;
}, 10, 1 );

// Remove it.
remove_filter( 'tag', function ( $param ) {
    return $param;
}, 10 );

试试这个.. 这将删除所有匿名函数的挂钩

global $wp_filter;
foreach ( $wp_filter as $filter_name => $filter_properties ):
        foreach ( $filter_properties->callbacks as $priority ):
            foreach( $priority as $function ):
                if( is_object( $function["function"] ) == true ):
                    unset( $wp_filter[ $filter_name ] );
                endif;
            endforeach;
        endforeach;
endforeach;