父主题的功能。php运行after 子主题的,因此为了删除父主题定义的操作remove_action
在父主题注册操作后,必须使用挂钩延迟调用。因此remove_action
纯粹在子函数内部调用。php无法工作。它必须连接到挂钩上。
然而,从问题中的代码摘录来看,不清楚家长是否add_action( \'tha_content_while_before\', \'fwp_archive_header\' );
line正好在函数中。php还是在一个动作中?如果它在动作中,则钩住remove_action
调用相同的操作,但优先级更高(因此它会在后面运行)。注意我说的是家长的行为add_action
电话在里面。类似这样:
add_action( \'some_hook\', \'some_parent_function\', 10 );
function some_parent_function() {
/* ...some code... */
add_action( \'tha_content_while_before\', \'fwp_archive_header\' );
if ( !function_exists(\'fwp_archive_header\') ) {
function fwp_archive_header() {
// do stuff
}
}
/* ...some code... */
}
删除操作如下所示:
add_action( \'some_hook\', \'remove_parent_actions_filters\', 11 );
function remove_parent_actions_filters() {
remove_action( \'tha_content_while_before\', \'fwp_archive_header\' );
}
另一个经验法则是将您的remove调用挂接到
wp_loaded
, e、 g.:
add_action( \'wp_loaded\', \'remove_parent_actions_filters\', 1000 );
. 应该仍然及时,以影响页面的呈现方式,但可能会晚到足以覆盖最常见的父主题挂钩。
另一方面,用名称声明一个空函数fwp_archive_header
几乎是同样好的解决方案。请注意,虽然它不是“重新声明”,因为PHP中没有这样的东西。它更像是父主题之前的“predeclare”,因此父主题不会用相同的名称声明自己的函数(有适当的检查)。