我遇到这种情况:
父主题:
的functions.php
require_once(dirname(__FILE__) . "/includes/theme-functions.php");
require_once(dirname(__FILE__) . "/includes/theme-hooks.php");
主题function.php
function name_of_this_function() {
// DO SOMETHING
}
add_action ('hook','name_of_this_function');
主题hooks.php
function hook() {
do_action('hook');
}
如果以前调用过我的函数,我如何在我的子函数.php中覆盖该动作?我试过了:
remove_action ('hook','name_of_this_function');
但当然这会返回false
答案 0 :(得分:1)
经过多次尝试(悲惨地失败)和大量在线阅读文档,我得到了答案。
解决方案位于" after_setup_theme"钩。
在我添加行动之前"在最重要的"父母的,这意味着我有两个标题,两个页脚等等。当然问题是我的functions.php无法删除尚未添加的内容。
这是由wordpress行为引起的,该行为在父主题之一之前运行子项的function.php。
此问题的解决方案是在设置主题后添加一个函数,其优先级强制它在父元素之后运行。这样,父进程的所有函数都将被初始化(父对象的设置被称为最后一个函数),我将能够删除一些动作。 这是语法:
add_action('after_setup_theme', 'my_setup', 3);
function my_setup(){
/* CUSTOM FOOTER */
remove_action('footer_hook','parent_site_info',99);
add_action('footer_hook','site_info',99);
}
解决了这个问题。