了解子主题函数.php

时间:2016-06-08 作者:WPasman

我已成功为Emmet Lite template, 使用上提供的信息herehere

子主题的CSS文件如下所示:

/*
Theme name: Emmet Child
Theme URI: http://www.example.com/
Description: This is a child of Emmet Lite theme
Author: Motopress
Author URI: http://www.getmotopress.com/
Template: emmet-lite
Version: 1.0
*/

/* Adjustments to the Emmet Lite template start here */

.top-header {
display: none;  
}

.site-header {
background-color: #FFC421;
}
我首先添加了@import 功能,但这对我不起作用。我读到的是,父css加载在子css之后,因此最后一个css获胜。为了解决这个问题,我添加了functions.php 到我的子文件夹,并删除@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 )
);
}
add_action( \'wp_enqueue_scripts\', \'my_theme_enqueue_styles\' );
?>
所以一切都正常运行,我在style.css 在我的网站上正确应用了子文件夹的。

Understanding the situation:

我的问题是:

家长Emmet 主题使用不同于style.css. 此模板使用的名称是。。。

埃米特风格。min.css

  • 埃米特风格。css(它们位于主题文件夹中,路径:emmet-lite/css/emmet-style.css)

    它还包括Woocommerce、Buddypress和Bootstrap的一组其他样式,但我用于编辑的唯一文件是emmet样式。最小css。

    我想知道我在这里做什么,即使它已经起作用了。我不喜欢PHP,所以从我的理解来看,这行代码调用了错误的CSS,但仍然有效?

    wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/style.css\' );
    
    风格。css应该是emmet-style.min.css 还是总是这样style.css 不管怎样?在开发functions.php 其中提到要更改style.css 指向正确CSS路径的路径。所以我可能误解了这里的PHP。

    有人能帮我更深入地解释一下functions.php 对于子主题和给定的路径?

  • 1 个回复
    最合适的回答,由SO网友:bravokeyl 整理而成

    我读到的是,父css加载在子css之后,因此最后一个css获胜

    这取决于主题开发人员加载样式表的顺序。

    通常WordPress加载子主题functions.php 首先是父主题,然后是父主题functions.php.

    父Emmet主题使用与样式不同的CSS文件。css

    是的,的确如此。这个style.css 在主题的根文件夹中是only needed 以便WordPress从标题中正确识别主题。

    style.css doesn\'t need to be enqueued 如果没有主题标头以外的任何CSS属性。

    我们可以为样式表使用任何其他名称,并以不同的方式加载它们,但style.css with theme header需要位于根文件夹中,以便WordPress将其标识为主题。

    通常一些主题开发人员喜欢将所有样式表组织到css文件夹中,Emmet Lite主题开发人员也使用这种情况。

    wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/style.css\'     );
    
    您不需要将上述父级排队style.css 因为它没有任何CSS规则。这只是一笔开销。

    Then how it\'s working now ?

    如果我们看一下父主题functions.php , 我们可以看到,它按照以下顺序加载样式表。

    Bootstrap(引导)功能强大的Flex Slider(灵活滑块)主样式(/css/emmet-style.min.css )

  • ...
  • ...style.css)
  • 因此,父主题在此加载所需的/css/emmet-style.min.css 文件,然后加载到style.css , 这就是风格。活动主题的css,在您的情况下是子主题的style.css.因此,您甚至不需要使用以下代码,因为父主题已经完成了这项工作。

    wp_enqueue_style( \'child-style\',
        get_stylesheet_directory_uri() . \'/style.css\',
        array( $parent_style )
    );
    

    Paths

    相关推荐

    为什么我的主题的css在另一个网站上不起作用

    我在Neve theme的基础上开发我的on theme。首先,我对脚本有问题,因为它不起作用,但我不得不从页脚更改它们的位置。php到标题。php的一切都很好。新的一些脚本无法工作,因为css根本没有加载。我尝试了5种不同的方法,但都失败了。标题中的。php我只是给他们<style> </style></我在函数中使用了寄存器样式。php,标题。php和页脚。php function my_theme_enqueue_styles() { &#x