1

在我的父主题中,我有一个没有初始语句的函数:

if (!function_exists(... etc...

如何在我的子主题中用同名的函数替换它?如果我在我的functions.php中创建函数,它会给我一个错误,因为有两个同名的函数。

预先感谢您的回答。

4

3 回答 3

1

这似乎对我有用:

function fileExistsInChildTheme($file_path){
    $file_directory = get_template_directory();
    if(file_exists($file_directory . "-child" . $file_path)){
        return $file_directory .= "-child" . $file_path;
    }
    return $file_directory .= $file_path;
}

require ( fileExistsInChildTheme('/includes/functions.php') );
require ( fileExistsInChildTheme('/includes/theme-options.php') );
require ( fileExistsInChildTheme('/includes/hooks.php') );
require ( fileExistsInChildTheme('/includes/version.php') );
于 2012-12-14T13:34:16.560 回答
0

子主题 function.php 文件在父主题函数文件之前加载,因此在子主题中重新声明函数不应出现致命错误。这就是您的父主题使用function_exists检查的原因。

也许你在钩子(例如初始化)之后在子主题中声明函数?

这是有关此的法典文档:http: //codex.wordpress.org/Child_Themes#Referencing_.2F_Including_Files_in_Your_Child_Theme

于 2012-05-26T16:53:52.573 回答
0

我想如果你添加相同的函数名称,那么它从子主题函数中获取,然后从父主题函数中获取。

例如。

儿童主题

if ( ! function_exists( 'function_name' ) ) {
  function function_name(){
    echo 'This is child theme';
  }
}

家长主题

if ( ! function_exists( 'function_name' ) ) {
  function function_name(){
    echo 'This is parent theme';
  }
}
于 2016-04-19T04:04:02.213 回答