重新定义子主题中的功能

时间:2014-11-12 作者:Antonello Facchetti

我正在开发一个儿童主题codex

我需要在函数中重新定义函数。php和该指南说,我可以通过添加代码来做到这一点:

if ( ! function_exists( \'theme_special_nav\' ) ) {
    function theme_special_nav() {
        //  Do something.
    }
}
这就是我所做的,但我得到以下错误

致命错误:无法在/web/htdocs/www.antonellofachetti.it/home/smg/wp-content/themes/pasw2015-child/functions.php:6)中重新声明reg\\u set\\u p()。it/主页/smg/wp内容/主题/pasw2015/功能。php在线71

我是否应该假设在最新的wp版本(使用4.0)中发生了一些变化?

1 个回复
SO网友:Pieter Goosen

我想你误解了这里的抄本。除非且仅当父主题在该条件语句中包装了函数时,否则不能重新声明同一函数

if ( ! function_exists( \'theme_special_nav\' ) ) {
    function theme_special_nav() {
        //  Do something.
    }
}
这意味着,您可以复制theme_special_nav() without 这个if 设置子主题的条件,保留相同的名称,并根据需要修改函数。

示例:

function theme_special_nav() {
   //  Modified content.
}
子主题的功能。首先加载php,然后加载父主题的函数。php。因此,当加载父主题时,它将首先检查子主题中是否已经存在同名函数,如果存在,则忽略/跳过父主题中的函数

如果父主题没有此条件语句包装函数,则有三个其他选择:

如果主题作者提供了过滤器,请使用功能中提供的过滤器。

如果没有提供自定义过滤器,则需要将特定功能复制到子主题,rename 它可以根据需要修改函数,然后查找在模板文件中调用该函数的所有实例,将该模板复制到子主题,并用对新函数的调用替换对旧函数的原始调用

如果函数挂接到动作挂钩或筛选器,则可以将其从特定挂钩中删除,并用修改后的函数替换为其他名称

结束

相关推荐

Child-theme breaks site

所以,我有一个子主题,里面除了所需的CSS文件之外什么都没有。一旦我激活了这个儿童主题,我的整个网站就关闭了。最后我有两个问题:激活一个只有CSS的子主题怎么能破坏我的网站</我怎样才能回到我原来的主题</这些是网站给我的错误:Warning: require_once(/wp-content/themes/interio_child/admin/options-framework.php) [function.require-once]: 无法打开流:中没有此类文件或目录/wp-c