为什么子主题CSS会被调用两次?


18

我根据WP文档创建了一个子主题,并添加了必要的功能

<?php
add_action( 'wp_enqueue_scripts', 'enqueue_child_theme_styles', PHP_INT_MAX);
function enqueue_child_theme_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' );
    wp_enqueue_style( 'child-style', get_stylesheet_uri(), array('parent-style')  );
}

不知何故,我最终获得了2个对我的子主题样式表的引用:

<link rel='stylesheet' id='twentythirteen-style-css'  href='http://DOMAIN.COM/wp-content/themes/twentythirteen-child/style.css?ver=2013-07-18' type='text/css' media='all' />

<link rel='stylesheet' id='child-style-css'  href='http://DOMAIN.COM/wp-content/themes/twentythirteen-child/style.css?ver=4.0' type='text/css' media='all' />

这是为什么?


您可以在子主题中发布style.css文件的标题信息吗?
cybmeta 2014年

Answers:


17

这篇文章的链接来自这篇文章,我现在已经对其进行了更新

感谢您提出此问题。我已经快速测试了该方案,并且子样式实际上已加载两次。

当我不久前更新代码库时,我确保将子样式加载到父样式之后,而实际上并没有考虑到默认情况下这实际上是完成的,并且给出的代码实际上将两次加载子样式表。

只需$priority从功能中删除并删除子主题的入队部分,就可以很容易地纠正此问题。我已经重新测试了所有内容,并且一切正常。如果有几个人可以合作,那就太好了。

同时,我将更新法典并链接到此文章。

这是工作代码

add_action( 'wp_enqueue_scripts', 'enqueue_parent_theme_style');
function enqueue_parent_theme_style() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' );
}

编辑

对于本贴所不适合的任何人,请参阅本贴。您将需要查看父主题如何添加样式。此问题中的代码严格认为,父级样式以正确的方式加载。如果不是,请查看链接答案中的替代方法,然后尝试一下


1
会测试。似乎WP不在乎样式表会被加载两次,或者我们缺少一些基本原理。
mmcglynn 2014年

就主题而言,我在使用此方法时遇到了几个问题,在此处详细介绍
dMcClintock 2014年

如果使用相同的“ id”,样式表将不会加载两次。但是,这又产生了一个问题-我想加入子样式表,以便在另一个CSS之后加载它,以便我可以覆盖它...但是,这只会复制样式(或者忽略是否使用相同的“ id”)
php-b- 2015年

1
我可以说,此方法的主要问题是子样式不会引入子主题的版本号。似乎引入了父主题的版本号,但这并不总是理想的。
Garconis

@ pieter-goosen我遵循了子主题中的示例,该示例使用子主题的版本号:wp_get_theme()->get('Version')。但是,我最终为WP版本和子主题版本复制了CSS:<link rel="stylesheet" id="bushwick-style-css" href="/wordpress//wp-content/themes/bushwick-child/style.css?ver=4.9.8"...><link rel="stylesheet" id="bushwick-child-css" href="/wordpress//wp-content/themes/bushwick-child/style.css?ver=1.3.6"...>。在这些情况下,解决方案是什么?
IvanRF '18 -10-04
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.