Wordpress儿童主题:覆盖功能

时间:2012-05-26 16:40:42

标签: php wordpress themes wordpress-theming

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

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

如何在我的子主题中使用相同名称的函数替换它? 如果我将函数创建到我的functions.php中,由于有两个具有相同名称的函数,它会给我一个错误。

提前感谢您的回答。

3 个答案:

答案 0 :(得分: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') );

答案 1 :(得分:0)

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

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

以下是有关此问题的codex文档:http://codex.wordpress.org/Child_Themes#Referencing_.2F_Including_Files_in_Your_Child_Theme

答案 2 :(得分: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';
  }
}