如果该类作为单例工作,并且有一个getInstance()方法(或类似方法)来检索实例,则可以删除该操作,方法与添加该操作的方式大致相同:
remove_action(\'wp_travel_engine_enquiry_form\', array( $instance, \'wpte_enquiry_form\' ));
编辑:我已经对此进行了更多的研究,您可以通过查看
$wp_filters
(全局变量,因此使用
global $wp_filters;
在函数中使用它之前)。
add_action("init", function() {
global $wp_filter;
foreach($wp_filter["wp_travel_engine_enquiry_form"][10] as $id => $filter) {
if(is_array($filter["function"]) && && count($filter["function"]) == 2 &&
get_class($filter["function"][0]) == "WP_Travel_Engine_Enquiry_Form_Shortcodes" &&
$filter["function"][1] == "wpte_enquiry_form") {
remove_action("wp_travel_engine_enquiry_form", $id);
}
}
}, 99);
这段代码查看的是
wp_travel_engine_enquiry_form
钩10是默认优先级,但您也可以轻松迭代其他优先级。
然后查看每个单独的过滤器是否为callable 一个对象和一个方法,以及该对象是否为我们要删除的正确类型和正确方法。因为当时的ID是已知的,remove_action
用于操纵$wp_filter
.
这不是最干净的方式,但激烈的时代要求采取激烈的措施。