如何在不使用@import的情况下设置子主题

时间:2017-02-23 作者:The Chewy

我总是在我的孩子主题中使用@import作为css,现在我被告知这是一种糟糕的做法。

什么是设置儿童主题的最佳方式?wordpress codex上的最新解决方案看起来很复杂/非常令人困惑?

在我的孩子主题的函数中,必须有一种相对简单的排队方式。php当然?

任何帮助都会很棒。我觉得在这方面找任何简洁的信息都是毫无用处的。

艾米丽

2 个回复
最合适的回答,由SO网友:David Lee 整理而成

中的代码codex 用于对父主题的样式进行排队,而不是使用@import, 没有得到很好的评论,因此我将对其进行更多的评论,因此您有以下内容:

<?php
function my_theme_enqueue_styles() {
    $parent_style = \'parent-style\';
    wp_enqueue_style($parent_style, get_template_directory_uri() . \'/style.css\');
    wp_enqueue_style(\'child-style\', 
            get_stylesheet_directory_uri() . \'/style.css\', 
            array($parent_style), 
            wp_get_theme()->get(\'Version\')
            );
}
add_action(\'wp_enqueue_scripts\', \'my_theme_enqueue_styles\');
?>
1-生产线:

$parent_style = \'parent-style\';
这是您为主题样式表提供的字符串名称,它将是$handle 例如,对于正在排队的样式表,它可以是您想要的样式表\'divi-style\', 在HTML 它将用作ID 像这样<link rel="stylesheet" id="divi-style" ...

2.-线路:

wp_enqueue_style($parent_style, get_template_directory_uri() . \'/style.css\');
它注册样式表并对其进行排队,注册时,它将使用第一个参数的名称,在本例中,它将是\'parent-style\', 还有它的使用get_template_directory_uri() 获取parent theme 样式表。

3.-线路:

wp_enqueue_style(\'child-style\', 
            get_stylesheet_directory_uri() . \'/style.css\', 
            array($parent_style), 
            wp_get_theme()->get(\'Version\')
            );
这是注册和排队子主题样式表(当前主题样式表),这是主题的常规过程,每个参数都已经解释过了here, 例如:

  • \'child-style\' - 这是此样式表的名称$handle

  • get_stylesheet_directory_uri() . \'/style.css\' - 这是样式表文件的路径。

  • array($parent_style) - 这是我们在运行样式表之前需要运行的样式表数组,我们无法放置实际路径,这就是为什么我们用$handle, 在这种情况下,我们需要先运行父样式表(这是一个依赖项)

  • wp_get_theme()->get(\'Version\') - 这是样式表末尾的数字版本URL 像这样/style.css?ver=1.0, 这是出于缓存的目的,标准是更新版本,以便加载最新的文件而不是缓存的版本,您不想在使用它的所有文件中更改该数字,对吗?so使用wp_get_theme()->get(\'Version\') 它将获取style.css 文件(不是父文件)。

    因此,如果您想要恢复的版本,它将如下所示:

    <?php
    
    function my_theme_enqueue_styles() {
        //load the parent stylesheet
        wp_enqueue_style( \'parent-style\', get_template_directory_uri() . \'/style.css\' );
        //load the child stylesheet but after the parent stylesheet
        wp_enqueue_style( \'child-style\', get_stylesheet_directory_uri() . \'/style.css\', array( \'parent-style\' ));
    
    }
    add_action( \'wp_enqueue_scripts\', \'my_theme_enqueue_styles\' );
    ?>
    

SO网友:Den Isahac

我想这是你正在寻找的特定代码,可以在WordPress Codex中找到How to Create a Child Theme

<?php
function my_theme_enqueue_styles() {
  // This is the parent style handle name. Recommended to leave as it is.
  $parent_style = \'parent-style\';

  wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/style.css\' );
  wp_enqueue_style( \'child-style\',
    get_stylesheet_directory_uri() . \'/style.css\',
    array( $parent_style ),
    wp_get_theme()->get(\'Version\')
  );
}
add_action( \'wp_enqueue_scripts\', \'my_theme_enqueue_styles\' );
?>
Credits 转到WordPress Codex。

相关推荐

Child-theme breaks site

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