为什么未加载子主题样式表?

时间:2017-01-23 作者:Sakena

我正在使用HashOne theme 并创建了一个儿童主题,以便对我们的网站进行各种颜色的更改。

然而,我对子主题样式表所做的更改仅发生在网站的某些部分,而其他更改则遵循父主题。我创建了一个functions.php 我认为文件格式正确。见下文:

<?php
add_action( \'wp_enqueue_scripts\', \'hashone_enqueue_styles\' );
function hashone_enqueue_styles() {
wp_enqueue_style( \'hashone-parent-style\', get_template_directory_uri() . 
\'/style.css\' );
}
当我使用inspect模式查看哪个CSS覆盖了子主题时,我能够确认它肯定是父主题。然而,有三个CSS文件同时运行,我不知道如何纠正这一点。

  1. stage.ottrial.pitt.edu/wp-content/themes/hashone/style.css?ver=4.7.1
  2. stage.ottrial.pitt.edu/wp-content/themes/hashone-theme-child/style.css?ver=1.0
  3. stage.ottrial.pitt.edu/wp-content/themes/hashone/style.css
领先的是3。我不确定我在这里做错了什么。

3 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

函数中不需要更多的代码。php文件将父主题css与子主题排入队列。问题是,通过添加该代码,您将再次将父主题的CSS排入队列,但现在它将在子主题之后加载。这意味着您在子主题中所做的所有更改都将无效。

只需删除该行,您就会看到子主题中的更改。

补充:以下是我使用的两个文件,它们只是将子主题css正确排队的基础文件。

风格css文件:

/*
 * Theme Name: HashOne Child
 * Template: hashone
 * Text Domain: hashone-chile
 */
功能。php文件:

<?php
add_action( \'wp_enqueue_scripts\', function() {
  wp_enqueue_style( \'hashone-parent-style\', get_template_directory_uri() . \'/style.css\' );
});

SO网友:Michael Ecklund

您不需要加载子主题的样式表,除非您想将其标记为style.css.

默认情况下,WordPress加载style.css 父主题和子主题的(在主题根目录中)。

确保您的子主题已激活,并将CSS添加到style.css 儿童主题的。

确保使用inspector轻松识别CSS规则。覆盖父主题的CSS规则有时可能很棘手。使用!important 可以帮助覆盖父主题中的一些CSS规则。

Example of using !important in CSS

假设父主题定义了此规则:

#site-title {
    color: #000000;
    background: #ffffff;
}
您可以在子主题中强制重写该规则,如下所示:

#site-title {
    color: #ffffff !important;
    background: #000000 !important;
}

SO网友:prosti

请记住从WP 4.7开始的新四重奏:

get_theme_file_uri()
get_parent_theme_file_uri()
get_theme_file_path()
get_parent_theme_file_path()
来代替旧的四重奏:

get_stylesheet_directory_uri()
get_template_directory_uri()
get_stylesheet_directory()
get_template_directory()
按照各自的顺序。好处是更好的命名约定。

相关推荐

在带有PHP的子主题中包含style.css

在里面https://codex.wordpress.org/Child_Themes 这是包含样式的最佳实践。css在子主题中,必须将下面的代码放入函数中。php的子主题,但将“父样式”替换为可以在函数中找到的父主题的参数。父主题的php。我在我的主题文件中找不到它,那里也没有多少代码。使用@import包含父主题样式表的方法不适用于我,放入文件的css不会在任何浏览器的站点上显示自己。function my_theme_enqueue_styles() { $parent_s