如何创建子主题而不丢失对父主题所做的更改

时间:2019-05-22 作者:Hashim Aziz

我正在尝试创建当前主题的子主题,同时在Appearance -> Customise 面板

然而,正如人们所预料的那样,我发现当涉及到这些东西的文档时,法典绝对是糟糕透顶的。

我创建了一个名为custom-theme, 该文件夹包含functions.phpstyle.css.

style.css 包含以下内容:

/*!
Theme Name: Custom Theme
Theme Author: My Name
Version: 1.0.0
Template: original-theme
Tags: blog, e-commerce, wide-blocks, block-styles, grid-layout, one-column, two-columns, three-columns, four-columns, right-sidebar, left-sidebar, translation-ready, custom-colors, custom-logo, custom-menu, featured-images, footer-widgets, full-width-template, theme-options, threaded-comments
*/
以及functions.php 包含以下内容:

<?php
add_action( \'wp_enqueue_scripts\', \'my_theme_enqueue_styles\' );
function my_theme_enqueue_styles() {

    $parent_style = \'original-theme-style\'; //

    wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/style.css\' );
    wp_enqueue_style( \'custom-theme-style\',
        get_stylesheet_directory_uri() . \'/style.css\',
        array( $parent_style )
    );
}
?>
。。。按照Codex entry on child themes (实际上,食品法典委员会还建议包括wp_get_theme()-&amp;gt;get(\'Version\'), 但这样做会彻底破坏网站。

尽管有上述所有内容,我的网站仍然只显示父主题的默认样式,不包括我使用自定义面板对其所做的任何更改。

法典还规定:

仅当父主题仅使用一种主样式时,以下示例函数才起作用。css保存所有css。如果您的子主题有多个。css文件(例如ie.css、style.css、main.css),然后您必须确保维护所有父主题依赖关系。

我的父主题确实有几个这样的文件:

/admin/dashboard/static/bundle/main.css
/static/bundle/customizer-controls.css
/static/bundle/editor.css
/static/bundle/main.css
/static/bundle/options.css
/static/bundle/woocommerce.css
不幸的是,法典让我自己弄清楚“维护所有父主题依赖关系”到底意味着什么,因为我在过去的几个小时里一直在尝试这样做,但没有成功。

How exactly do I create a child theme without losing changes made to the parent in the Customise panel?

提前感谢您,我非常感谢您的帮助,为这样一个广泛使用的软件做一件应该是基本的事情。

1 个回复
SO网友:Rick Hellewell

事实上,创建一个儿童主题在法典和许多教程中都有很好的记录。

对于在父主题中对自定义屏幕所做的更改,您需要导出这些更改,然后将它们导入到子主题中。子主题不会继承自定义项(我认为)。但是有一些定制的导出/导入插件可以帮助实现这一点。他们将把父主题的所有定制都放入私有主题中。

不确定是否需要在子项中添加任何额外代码functions.php 文件所有这些都应该在加载子主题时进行处理。据我所知,首先加载子主题,然后加载父主题,因此子主题中缺少的任何内容都是从父主题加载的。

(还有,我也不知道为什么会投反对票。我不太喜欢投反对票。我认为这里提出的任何问题对提出问题的人来说都很重要,值得礼貌地回答,即使这是为了提醒他们(温和地)要问的正确问题。)