无法获取子主题以加载最新版本的style.css


9

我正在使用正确设置的儿童主题。但我只是无法获得Child主题style.css中的更改以反映在网站中。尝试清空浏览器缓存一百万次,但它不起作用!

我创建了子模板文件,并且它们可以覆盖父模板文件。

我注意到,从视图上看,它会在样式表的末尾放置一个版本号,如下所示:-style.css?ver = 3.9.1,即使我未创建任何版本!

在我创建的另一个站点中,没有样式表的版本控制,因此为什么在我不希望设置样式表时将其自动放入。

如何强制它使用Child style.css文件的最新版本而不是版本?

这是我的网站网址:-http: //www.peterswebservices.co.uk/


1
浏览器缓存是最明显的可能性,但是服务器缓存可以产生相同的效果,某些ISP和独立站点提供的Web“加速器”也可以产生同样的效果。
s_ha_dum 2014年

您看到的版本部分只是wordpress自动添加的当前wordpress版本。不用担心。
Pieter Goosen 2014年

Answers:


4

在二十四岁时,尝试将其放在您的孩子主题中:

function add_require_scripts_files() {
 wp_enqueue_style('twentyfourteen-style', get_stylesheet_directory_uri().'/style.css', array(), '1.0.0', "all");        
}
add_action( 'wp_enqueue_scripts', 'add_require_scripts_files' );

这将替换原始样式表,但使用您自己的版本。如果使用其他父主题,请查看原始的wp_enqueue_style标签以获取style.css,并在子主题中重复该标签。每次进行更改时,您都必须将1.0.0更改为另一个数字(因此,对于不经常进行更改的生产环境而言,这更好。)

要一起从脚本和样式中删除版本,请尝试以下操作:

// remove WP version tag from scripts and styles, best for dev environments
// by Adam Harley https://wordpress.org/support/topic/enqueueregister-script-remove-version
add_filter( 'script_loader_src', 'remove_src_version' );
add_filter( 'style_loader_src', 'remove_src_version' );
function remove_src_version ( $src ) {
  global $wp_version;
  $version_str = '?ver='.$wp_version;
  $version_str_offset = strlen( $src ) - strlen( $version_str );
  if( substr( $src, $version_str_offset ) == $version_str )
    return substr( $src, 0, $version_str_offset );
}

4

在类似的情况下,将以下函数添加到与X一起使用的Child主题的'functions.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(), NULL, filemtime( get_stylesheet_directory() . '/style.css' ) );
}

只是不要忘记在启动您的网站之前将其删除。

还请注意托管服务提供商的缓存功能以使此更新生效。

根据作者

...这是在WordPress中结合childmme-stylesheet和filemtime()强制浏览器加载css文件新版本的最佳方法。我没有将filemtime()用于父样式,因为我从未碰过它,因此filemtime()只会浪费资源。

来源:Daniel截至 2014年10月22日对“防止CSS缓存”一文的评论 https //css-tricks.com/snippets/wordpress/prevent-css-caching/#comment-1586141


0

在没有看到站点的情况下,我们无法帮助诊断问题,但常见的问题是css的主要主题是css而不是子css,您可以使用!important标签(例如,

#element {
 color:#fff !important;
}

重要标记将css标记为比具有css相同行的任何其他css文件优先

让我们知道网址,如果有帮助


我不认为!important是问题所在,但这是我的网址:-peterswebservices.co.uk另外,当我在Google Chrome上使用检查器并向下钻取到css文件时,它显示的是先前版本而没有最新更改。
user1199360 2014年

0

我只是遇到了同样的问题,事实证明这是我的新主机默认情况下启用了某种缓存。我转到控制面板并刷新了缓存,然后它正确地提供了正确的style.css文件。

?ver = 3.9.1变成了红色鲱鱼(至少对我而言)。在刷新缓存后,它仍然显示?ver = 3.9.1,这在我的css文件中的任何位置都找不到,但是一切正常。


1
?ver=3.9.1自动由WordPress加入。这是wordpress的当前版本,与您的主题无关:-)
Pieter Goosen 2014年

0

我遇到了同样的问题,并且以不同于默认值的其他方式修复了它。

首先,我找到了需要更改的文件:

wp-includes\theme.php

有一个名为get_stylesheet_uri的函数

我的函数如下所示:

function get_stylesheet_uri() {
    $time = time();
    $stylesheet_dir_uri = get_stylesheet_directory_uri();
    $stylesheet_uri = $stylesheet_dir_uri . '/style.css?v='.$time;
    /**
     * Filter the URI of the current theme stylesheet.
     *
     * @since 1.5.0
     *
     * @param string $stylesheet_uri     Stylesheet URI for the current theme/child theme.
     * @param string $stylesheet_dir_uri Stylesheet directory URI for the current theme/child theme.
     */
    return apply_filters( 'stylesheet_uri', $stylesheet_uri, $stylesheet_dir_uri );
}
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.