【问题标题】:Wordpress child theme styles not overriding previously enqueued stylesWordpress 子主题样式不会覆盖以前排队的样式
【发布时间】:2018-01-02 23:06:08
【问题描述】:

我是 WordPress 开发新手,正在尝试构建一个简单的子主题。我要疯狂试图让子样式覆盖父主题排队的引导样式。

我在网上看到的一切都说要解决这个问题,你必须确保你的孩子主题最后入队,我相信我已经在我孩子的 functions.php 中实现了这一点:

<?php

    // enqueue styles
    function sparkling_enqueue_styles() {

        // enqueue parent styles
        wp_enqueue_style('sparkling-theme', get_template_directory_uri() .'/style.css');

        // enqueue child styles
        wp_enqueue_style('child-theme', get_stylesheet_directory_uri() .'/style.css', array('sparkling-theme', 'sparkling-bootstrap'), '1.0', true);
    }

    add_action('wp_enqueue_scripts', 'sparkling_enqueue_styles');

当在开发工具中检查时,这给了我一个带有以下元素顺序的头部:

<link rel="stylesheet" id="sparkling-theme-css" 
href="http://localhost/wordpress/wp-content/themes/sparkling/style.css?
ver=4.8" type="text/css" media="all">

<link rel="stylesheet" id="sparkling-bootstrap-css" 
href="http://localhost/wordpress/wp-
content/themes/sparkling/inc/css/bootstrap.min.css?ver=4.8" type="text/css" 
media="all">

<link rel="stylesheet" id="child-theme-css" 
href="http://localhost/wordpress/wp-content/themes/sparkling-
child/style.css?ver=1.0" type="text/css" media="1">

<link rel="stylesheet" id="sparkling-style-css" 
href="http://localhost/wordpress/wp-content/themes/sparkling-
child/style.css?ver=4.8" type="text/css" media="all">

我已将这段 CSS 添加到我的子主题样式表中:

@media (min-width: 768px) {
    .navbar-header {
        float: right !important;
    }
}

但是当我去检查我的 .navbar-header 元素时,由于引导样式,它仍然向左浮动:

bootstrap.min.css?ver=4.8:5

@media (min-width: 768px) {
    .navbar-header {
        float: left;
}

我有两个问题。不知道有没有关系。

  1. 为什么我的子主题样式没有覆盖引导样式?
  2. 头部的最终样式表(sparkling-style-css)来自哪里?我认为这是之前尝试排队的阴影,很久以前就从我的 functions.php 文件中删除了。

非常感谢任何帮助!我已经尝试将引导文件出队重新入队,但这似乎无济于事,它会影响设计的其他部分。

【问题讨论】:

  • 如果可能的话,您能否发布您的 header.php 文件代码和网站的实时链接?
  • 关于第二个样式表,我认为这是因为 WordPress 自动包含带有 sparkling-style 名称的 style.css。你使用child-theme 所以它不会覆盖它。尝试将其作为sparkling-style 排队,应该没问题。
  • 嘿@pomaaa,我刚刚更新了问题,因为我发现了我的错误。感谢您与我们联系。

标签: php css wordpress


【解决方案1】:

经过数小时的研究并仔细研究我的排队代码和 PHP,结果发现我试图排队的子样式表存在问题:右括号已在我的 CSS 深处某处被删除,它是要么阻止文件入队,要么阻止应用样式。

我仍然不确定为什么最后一个(不存在的)样式表出现在标题中,但它无法出队,所以我在 SO 上应用了其他人推荐的以下代码:

// dequeue ghost duplicate child styles
function remove_assets() {
    wp_dequeue_style('sparkling-style');
    wp_deregister_style('sparkling-style'); 
}

add_action('wp_print_styles', 'remove_assets', 99999);

我不知道这是否是使顽固资产出队的最优雅方式,但它似乎有效。

【讨论】:

    猜你喜欢
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    相关资源
    最近更新 更多