这里的问题是子主题的功能。php在父主题函数之前加载。php。因此,添加/删除操作的顺序如下:
//* From the child theme
remove_action( \'wp_head\', \'func\', 5 );
//* From the parent theme
add_action( \'wp_head\', \'func\', 5 );
回调到
func
在
wp_head
挂钩在添加之前已移除。因此,删除动作的子主题似乎不起作用。实际上
remove_action()
函数正在尝试删除
func
来自的回调
wp_head
钩子,但尚未添加。
解决方案是在父主题功能完成后的任何时候连接到WordPress。php加载并删除该操作。
add_action( \'after_setup_theme\', \'wpse_222809_after_setup_theme\' );
function wpse_222809_after_setup_theme() {
remove_action( \'wp_head\', \'func\', 5 );
}
这是因为
after_setup_theme
钩子在父主题函数之后激发。因此,添加/删除操作的顺序为:
//* From the child theme
add_action( \'after_setup_theme\', \'wpse_222809_after_setup_theme\' );
//* From the parent theme
add_action( \'wp_head\', \'func\', 5 );
//* From the wpse_222809_after_setup_theme function hooked to after_setup_theme
//*( hook added in child theme )
remove_action( \'wp_head\', \'func\', 5 );
这也适用于替换
after_setup_theme
具有
init
, 正如你所想,因为
init
钩子在父主题函数之后激发。php及之前版本
wp_head
.