如何缓存半身子主题style le.css

时间:2016-01-01 作者:Marcel Stör

我的问题可能有几个方面,但我觉得本质上很简单:如何确保更改儿童主题style.css 是否跨缓存正确传播?

我在一些地方读到,WP应该/将把WP版本放在nnn 当资源提取为http://host/wp-content/themes/theme-child/style.css?ver=nnn. 在我的安装中http://frightanic.com/ 我看到使用了父主题版本。我有W3 Total缓存和一个CDN,但即使它们被禁用了wp-content/themes/frightanic/style.css?ver=3.0.7 已请求。3.0.7 是的版本Decode 父主题。

但是,尽管如此,如果我更新我的子主题CSS而不同时更新WP或父主题,我怎么能从缓存中取出它呢?

4 个回复
最合适的回答,由SO网友:Marcel Stör 整理而成

@dalbaeb的评论最终导致了深入的讨论和可行的解决方案。非常感谢!

我相信我的孩子主题CSS之所以使用\'ver=<parent-theme-version> 是因为我遵循了WP Codex on child themes 1: 1。我的functions.php 包含以下内容:

add_action(\'wp_enqueue_scripts\', \'theme_enqueue_styles\');
function theme_enqueue_styles() {
  wp_enqueue_style(\'parent-style\', get_template_directory_uri() . \'/style.css\');
}
我最终使用的代码是在https://wordpress.stackexchange.com/a/182023/30783 但互联网上的许多网站都粘贴了它(没有给出适当的信用)。

// Making sure your child theme has an independent version and can bust caches: https://wordpress.stackexchange.com/a/182023/30783
// Filter get_stylesheet_uri() to return the parent theme\'s stylesheet
add_filter(\'stylesheet_uri\', \'use_parent_theme_stylesheet\');
// Enqueue this theme\'s scripts and styles (after parent theme)
add_action(\'wp_enqueue_scripts\', \'my_theme_styles\', 20);

function use_parent_theme_stylesheet()
{
    // Use the parent theme\'s stylesheet
    return get_template_directory_uri() . \'/style.css\';
}

function my_theme_styles()
{
    $themeVersion = wp_get_theme()->get(\'Version\');

    // Enqueue our style.css with our own version
    wp_enqueue_style(\'child-theme-style\', get_stylesheet_directory_uri() . \'/style.css\',
        array(), $themeVersion);
}

Update 2017-01-26

当前的WP主题手册现在包含一个正确的修复程序:https://developer.wordpress.org/themes/advanced-topics/child-themes/#3-enqueue-stylesheet

SO网友:jcdarocha

当您直接在页眉中添加时,这种方法效果很好。php并在每次更新css文件时刷新缓存:

<link rel="stylesheet" href="<?php bloginfo(\'stylesheet_url\'); echo \'?\' . filemtime( get_stylesheet_directory() . \'/style.css\'); ?>" type="text/css" media="screen" />
它显示:样式。css?324932684,其中数字是编辑文件的时间

SO网友:Joshua Coolman

这也可能奏效。使用php rand函数:

function theme_enqueue_styles() {

    $parent_style = \'parent-style\';

    wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/style.css\' );
    wp_enqueue_style( \'child-style\',
        get_stylesheet_directory_uri() . \'/style.css?\'.rand(),
        array( $parent_style )
    );
}
add_action( \'wp_enqueue_scripts\', \'theme_enqueue_styles\' );

SO网友:user1676224

WordPress现在用一个函数来说明这一点。

add_action( \'wp_enqueue_scripts\', \'my_theme_enqueue_styles\' );
function my_theme_enqueue_styles() {
    wp_enqueue_style( \'child-style\', get_stylesheet_uri(),
        array( \'parenthandle\' ), 
        wp_get_theme()->get(\'Version\') // this only works if you have Version in the style header
    );
}
使用Version: 1.0.0 在实际样式表中Enque Stylesheet with revision

相关推荐

Wp_cache_set不工作有什么原因吗?

wp\\u cache\\u设置不工作的原因是什么?我一直在转动车轮,试图弄明白为什么这些都不起作用。有什么建议吗?这些函数旨在帮助我将结果缓存到键/对象,然后利用键/对象显示信息。但是,它们不存储密钥/对象$related_post_ids = wp_cache_get( \'related_post_ids\' ); if ( false === $related_post_ids ) { //seting args and run query $the_query = new