未加载子主题中的CSS

时间:2017-12-22 作者:RuuddR

我试图制作一个儿童主题来改变一些颜色。我用过这个https://codex.wordpress.org/Child_Themes 教程,但我仍然无法完成。问题是我无法覆盖某些样式,因为我的名为“bootstrap.css”的样式表没有加载。我的职能。php文件如下所示

<?php
function my_theme_enqueue_styles() {
    $parent_style = \'maxstore_theme_stylesheets\'; // This is \'twentyfifteen-style\' for the Twenty Fifteen theme.
    wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/style.css\' );
    wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/css/bootstrap.css\' );
    wp_enqueue_style( \'child-style\', get_template_directory_uri() . \'/style.css\', array( $parent_style ), wp_get_theme()->get(\'Version\'));
    wp_enqueue_style( \'child-style\', get_template_directory_uri() . \'/css/bootstrap.css\', array( $parent_style ), wp_get_theme()->get(\'Version\'));
}
add_action( \'wp_enqueue_scripts\', \'my_theme_enqueue_styles\' );
?>
这些是正在加载的文件enter image description here

EDIT 1:我现在正在使用此代码,但它仍然不起作用

<?php
function my_theme_enqueue_styles() {
    $parent_style = \'maxstore_theme_stylesheets\'; // This is \'twentyfifteen-style\' for the Twenty Fifteen theme.
    wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/style.css\' );
    wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/css/bootstrap.css\' );
    wp_enqueue_style( \'child-style\', get_stylesheet_directory_uri() . \'/style.css\', array( $parent_style ), wp_get_theme()->get(\'Version\'));
    wp_enqueue_style( \'child-style\', get_stylesheet_directory_uri() . \'/css/bootstrap.css\', array( $parent_style ), wp_get_theme()->get(\'Version\'));
}
add_action( \'wp_enqueue_scripts\', \'my_theme_enqueue_styles\' );
?>
EDIT 2:我的引导样式表正在加载,但出于某种原因,我的网站仍在使用它的另一个版本。正如您所看到的,它使用了3倍相同的样式,而真正使用的是版本3.3.4。我想用蓝色的版本1.0.2enter image description here版本3.3.4,我想使用引导版本1.0.2。enter image description hereEDIT 3:来自函数的代码。我目前正在使用的php

<?php
function my_theme_enqueue_styles() {

    $parent_styles = array(\'maxstore_theme_style\', \'maxstore_theme_bootstrap\'); 
// This is \'twentyfifteen-style\' for the Twenty Fifteen theme.

    wp_enqueue_style( $parent_styles[0], get_template_directory_uri() . 
\'/style.css\' );
    wp_enqueue_style( $parent_styles[1], get_template_directory_uri() . 
\'/css/bootstrap.css\' );
    wp_enqueue_style( \'child-style\', get_stylesheet_directory_uri() . 
\'/style.css\', $parent_styles, wp_get_theme()->get(\'Version\'));
    wp_enqueue_style( \'child-bootstrap\', get_stylesheet_directory_uri() . 
\'/css/bootstrap.css\', $parent_styles, wp_get_theme()->get(\'Version\'));
}
add_action( \'wp_enqueue_scripts\', \'my_theme_enqueue_styles\' );
?>

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

父主题与子主题

get_template_directory_uri 总是指的是父主题,当事情没有按预期加载时,您可以通过查看浏览器开发工具中的控制台来验证这一点。这些将显示错误文件夹中CSS文件的404个错误。

相反,使用get_stylesheet_directory_uri, 这个stylesheet 函数系列始终引用当前活动主题

重复的名称

wp_enqueue_style( \'child-style\', get_stylesheet_directory_uri() . \'/style.css\', array( $parent_style ), wp_get_theme()->get(\'Version\'));
wp_enqueue_style( \'child-style\', get_stylesheet_directory_uri() . \'/css/bootstrap.css\', array( $parent_style ), wp_get_theme()->get(\'Version\'));
您不能将两个样式表调用为同一事物并期望它工作,这是您对所有4个样式表所做的

还请注意,您已加载bootstrap.css 从两个主题

SO网友:Landing on Jupiter

每个排队请求都需要一个唯一的句柄(或名称),这是wp_enqueue_style hook. 由于前两个和后两个命令具有相同的句柄,因此可能只加载四个命令中的两个。

试试这个。我遵循了您为父样式句柄声明变量的模型。我用一个包含两个唯一句柄的数组替换了$parent\\u样式。请注意,这意味着依赖关系语句不再需要数组,因为我们正在使用的变量已经是一个了,正如我的代码中所反映的那样。

<?php
function my_theme_enqueue_styles() {
    $parent_styles = array( \'maxstore_theme_style\', \'maxstore_theme_bootstrap\' );
    wp_enqueue_style( $parent_styles[0], get_template_directory_uri() . \'/style.css\' );
    wp_enqueue_style( $parent_styles[1], get_template_directory_uri() . \'/css/bootstrap.css\' );
    wp_enqueue_style( \'child-style\', get_stylesheet_directory_uri() . \'/style.css\', $parent_styles, wp_get_theme()->get(\'Version\'));
    wp_enqueue_style( \'child-bootstrap\', get_stylesheet_directory_uri() . \'/css/bootstrap.css\', $parent_styles, wp_get_theme()->get(\'Version\'));
}
add_action( \'wp_enqueue_scripts\', \'my_theme_enqueue_styles\' );
?>

结束