WordPress主题remove_action在子主题中不起作用。

Wordpress2年前 (2023)发布 SUYEONE
570 0 0

WordPress中,创建子主题是为了在不干扰父主题核心功能的情况下进行定制。在这种情况下,你的目标是移除父主题中的特定动作`wpsites_query`。你已经正确地识别出,为了删除一个动作,你需要使用与添加时相同的名字、回调函数和优先级。然而,有时在子主题中直接使用`rEMOve_Action`可能不会生效,特别是在动作已经被触发之后。

为了解决这个问题,你可以尝试在子主题的`functions.php`文件中创建一个新的函数,如`child_remove_parent_hooks`,并在`init`动作钩子上注册它。这样可以确保在WordPress加载其他函数之前,你的取消注册动作已经执行。

以下是修改后的代码:

“`php
function child_remove_parent_hooks() {
remove_action(‘pre_get_posts’, ‘wpsites_query’, 10);
}
// 使用与父主题添加动作相同的优先级(15)
add_action(‘init’, ‘child_remove_parent_hooks’, 15);
“`

这段代码会在WordPress初始化阶段运行`child_remove_parent_hooks`函数,该函数会尝试移除父主题中`pre_get_posts`钩子上的`wpsites_query`动作。这样,即使父主题在稍后的加载过程中尝试添加这个动作,它也会被子主题提前移除,从而达到预期的效果

© 版权声明

相关文章

暂无评论

暂无评论...
☺一键登录开启个人书签等功能!