繁体   English   中英

WordPress中的覆盖功能(带钩子)

[英]Override function (with hook) in wordpress

我有这种情况:

父主题:

functions.php

require_once(dirname(__FILE__) . "/includes/theme-functions.php");
require_once(dirname(__FILE__) . "/includes/theme-hooks.php"); 

theme-function.php

function name_of_this_function() {
    // DO SOMETHING
}
add_action ('hook','name_of_this_function');

theme-hooks.php

function hook() {
    do_action('hook');
}

给定我的名字之前,我该如何在我的孩子的functions.php中覆盖该动作? 我试过了:

remove_action ('hook','name_of_this_function');

但是当然,这返回false

经过多次尝试(非常失败)并在线阅读了大量文档后,我得到了答案。

解决方案位于“ after_setup_theme”挂钩中。

在将动作添加到父项的“顶部”之前,这意味着我有两个页眉,两个页脚,依此类推。 当然,问题在于我的functions.php无法删除尚未添加的内容。

这是由在父主题之一之前运行子项的functions.php的wordpress行为引起的。

解决此问题的方法是在设置主题之后添加功能,该功能具有优先级,以强制其在父项之一之后运行。 这样,将初始化父级的所有函数(将父级的后设置称为最后一个函数),并且我将能够删除某些操作。 这是语法:

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);
}

那解决了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM