子主题-从父网站复制到子网站的一些文件仍使用父文件

时间:2017-03-02 作者:Miguel Pinto

我的孩子团队遇到了一些问题,我想知道是否有人知道我能为我的问题做些什么。

我已根据此主题创建了一个子主题:https://en-gb.wordpress.org/themes/colormag/

我试图在显示标题图像的同一个div上,为使用挂钩创建的小部件注入一个新区域。经过一些测试,我不能做我想做的事情,所以我决定将相关文件从父主题复制到子主题中,进行更改并完成处理。

我的问题就在这一部分。我复制了2个文件:header.phpheader-functions.php, 将头文件保留在我的主题的根目录中,并为头函数文件创建类似的路径。如果你看到文章末尾的图片,你会看到网站正在使用my child上的头文件(替换父头文件),但它仍然使用父主题中的头函数文件。我尝试了不同的方法,以使网站使用我的标题功能文件而不是父文件,但或它不起作用,或它破坏了我的页面(空白页面)。

有人知道我如何修复这个问题并使其正常工作吗(我对WP网站结构相对较新)。

(Note: 如果有人想检查,我想修改的函数是function colormag_header_image_markup( $html, $header, $attr )header-functions.php)

非常感谢-米格尔

enter image description here

4 个回复
最合适的回答,由SO网友:marwyk87 整理而成

尝试重写父主题函数,而不是创建子主题header-functions.php 文件以下是关于如何进行的参考:https://www.mhthemes.com/support/overriding-parent-theme-functions-child-theme-tutorial/

检查父主题header-functions.php 文件正在实现可插入功能。然后您可以在functions.php 文件

SO网友:David Lee

您需要引用子主题文件,因此,您应该在functions.php:

// A constant to define the paths to our folders.
define(\'CHILD_THEME_FILE\', __FILE__);
define(\'CHILD_THEME\', trailingslashit(get_template_directory(CHILD_THEME_FILE)));
define(\'CHILD_THEME_INC_PATH\', CHILD_THEME_PATH . \'inc/\');
//load the file
require_once( CHILD_THEME_INC_PATH . \'header-functions.php\' );
header.php 这是一个你不需要参考的文件,因为它是WordPress的已知文件,自定义文件如header-functions.php 需要显式加载,因为function.php 您的子主题文件将首先加载您可以上载您的版本,而父主题将不会加载,因为它使用require_once.

SO网友:WPExplorer

很容易通过子主题重写函数。请参阅以下代码:

add_filter( \'get_header_image_tag\', \'colormag_header_image_markup\', 10, 3 );
您使用的主题实际上覆盖了主题的核心过滤器,这意味着您可以使用更高的优先级(它们使用10)覆盖它们的代码。示例:

function your_prefix_custom_header_image_markup() {

    // YOUR CUSTOMIZATIONS HERE

}
add_filter( \'get_header_image_tag\', \'your_prefix_custom_header_image_markup\', 40, 3 );
我在示例中使用了优先级40,因此它覆盖了主题,但您可以使用高于10的任何值,它应该可以工作。

如果这不起作用,您可以随时删除他们的操作并添加自己的操作。示例:

// Your custom output
function your_prefix_custom_header_image_markup() {

    // YOUR CUSTOMIZATIONS HERE

}
add_filter( \'get_header_image_tag\', \'your_prefix_custom_header_image_markup\', 40, 3 );

// Remove the theme action
remove_action( \'colormag_header_image_markup_render\',\'colormag_header_image_markup_filter\' );

// Add your own action
function your_prefix_custom_image_header_tag_markup() {
    add_filter( \'get_header_image_tag\', \'colormag_header_image_markup\', 10, 3 );
}
add_action( \'colormag_header_image_markup_render\', \'your_prefix_custom_image_header_tag_markup\' );

SO网友:NunYa

也许上面的一个答案对你有用。。。如果不是:

您不想将父文件复制到子主题。相反,在子主题中创建一个新的同名空文件,然后用所需的代码片段填充它。

希望这有帮助。

哦,您还必须镜像子主题文件夹中的路径,所以inc/header函数。php。