REMOVE_ACTION不使用过程函数

时间:2016-04-05 作者:JSP

我有一个购买的主题,可以按程序加载如下操作:

function func() {
    echo "head content";
}
add_action( \'wp_head\', \'func\', 5 );
遵循remove action codex 我尝试了以下方法:

remove_action( \'wp_head\', \'func\', 5 );
这不起作用,所以我认为这是一个优先考虑的问题,所以我调整了更高和更低的都不起作用。然后我尝试将函数包装到另一个函数中,如:

function testfunc() {
    if (remove_action( \'wp_head\', \'func\', 5 )) {
        echo "removed action";
    }
}
add_action( \'wp_head\', \'testfunc\', 1000 );
再次玩弄优先权。一直以来remove_action 正在返回true,但未删除该操作。然后我尝试在init 行动成功了。太棒了不幸的是,我不知道为什么。更令人困惑的是需要包装功能。最后,《法典》明确规定:

还值得注意的是,您可能需要优先考虑将操作移除到发生的挂钩after the action is added. 在添加操作之前,无法成功删除该操作。

根据this codex entry 二者都initget_header (有效)在wp_head 函数连接到的操作。有人能帮我解开这个谜团吗?

编辑:回答@sumit的问题add_action 通过包含在主主题函数中发生。php(它包括library/core.php)。这个remove_action 在函数中。子主题的php。

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

这里的问题是子主题的功能。php在父主题函数之前加载。php。因此,添加/删除操作的顺序如下:

//* From the child theme
remove_action( \'wp_head\', \'func\', 5 );
//* From the parent theme
add_action( \'wp_head\', \'func\', 5 );
回调到funcwp_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.

相关推荐

自定义发布类型的POST_ROW_ACTIONS

我正在使用this 在WordPress Admin中具有重复post函数的代码。但是,当我为自定义帖子类型添加过滤器时,如下所示:add_filter( \'directory_row_actions\', \'rd_duplicate_post_link\', 10, 2 ); (自定义帖子类型的注册名称为directory) - 它不会将其添加到条目标题下的操作行中。当我为帖子或页面执行此操作时,如下所示:add_filter( \'post_row_actions\', \'rd_dup