REMOVE_ACTION不起作用,即使在更改优先级之后也是如此

时间:2016-02-25 作者:Django

因此,我的主题中的一个功能是:

public function job_manager_job_filters_distance() {
   //Show some HTML
}
文件中还有其他地方:

add_action( \'job_manager_job_filters_search_jobs_end\', array( $this, \'job_manager_job_filters_distance\' ), 0 );

I want to disable this function.

所以很自然地我去了我孩子主题的功能。php并添加了remove\\u操作:

remove_action( \'job_manager_job_filters_search_jobs_end\', \'job_manager_job_filters_distance\' );
它不起作用。然后我尝试了不同的优先顺序:

remove_action( \'job_manager_job_filters_search_jobs_end\', \'job_manager_job_filters_distance\', 20 );
还是不行。然后,我尝试将其包装到一个在加载主题后触发的函数中:

function remove_listify_junk() {
    remove_action( \'job_manager_job_filters_search_jobs_end\', \'job_manager_job_filters_distance\' );
}
add_action( \'after_setup_theme\', \'remove_listify_junk\', 999 );
而函数仍在做它的事情=[。。。

What am I missing here?

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

您正在尝试取消挂钩PHP函数,而不是(类)实例方法-请参见此处:

array( $this, \'job_manager_job_filters_distance\' )
。。。这是注册到挂钩的实际回调。要取消挂钩,您需要相同的(实例引用)。

如果您试图从类中脱钩,只需使用上述方法即可。否则,您需要引用实例-请在代码中查找以下内容:

$my_class = new Name_Of_Class;
。。。然后你会跑:

remove_action( \'job_manager_job_filters_search_jobs_end\', array( $my_class, \'job_manager_job_filters_distance\' ) , 0 );