子のテーマをキャッシュする方法style.css


8

私の質問にはいくつかの側面があるかもしれませんが、本質的には簡単だと思います:子テーマへの変更がstyle.cssキャッシュ全体に適切に伝播されることをどのように確認しますか?

nnnリソースがとしてフェッチされるときに、WPがWPバージョンを配置する必要がある/配置する予定の場所をいくつか読みましたhttp://host/wp-content/themes/theme-child/style.css?ver=nnnhttp://frightanic.com/にある私のインストールでは、代わりに親テーマバージョンが使用されていることがわかります。W3 Total CacheとCDNを配置していますが、無効になっている場合でも、wp-content/themes/frightanic/style.css?ver=3.0.7リクエストされたようなリソースが使用されています。デコードの親テーマの3.0.7バージョンです。

しかし、そうかもしれませんが、WPまたは親テーマを更新せずに子テーマCSSを更新する場合、キャッシュからバストを無効にするにはどうすればよいですか?


回答:


11

@dalbaebのコメントは、最終的に洞察に満ちた議論と実現可能な解決策につながります。どうもありがとう!

私が子テーマCSSを使用して読み込まれた理由は、子テーマでWP Codexを 1対1で'ver=<parent-theme-version>追跡したためだと思います。私はこれを含んでいた: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);
}

アップデート2017-01-26

現在のWPテーマハンドブックには適切な修正が含まれています:https : //developer.wordpress.org/themes/advanced-topics/child-themes/#3-enqueue-stylesheet


いいね!自分の質問に答えた場合は、自分の答えを解決策として受け入れてもかまいません。
ファットカット

私は知っていますが、その機能が利用可能になるまで2日間待つ必要があります。
MarcelStör2016年

3
:現在のWPテーマハンドブックは現在、適切な修正が含まれdeveloper.wordpress.org/themes/advanced-topics/child-themes/...
マルセルSTOR

1

これは、header.phpに直接追加し、cssファイルを更新するたびにキャッシュを更新するときにうまく機能します。

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); echo '?' . filemtime( get_stylesheet_directory() . '/style.css'); ?>" type="text/css" media="screen" />

次のように表示されます。style.css?324932684ここで、番号はファイルが編集された時間です


1
スタイルはwp_enqueue_style、ハードコーディングの代わりにを使用してエンキューする必要があります。
bravokeyl 2016

0

これもうまくいくかもしれません。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' );

1
これらのアセットは、変更されない限りブラウザでキャッシュできるようにしたいので、良い考えではありません。
MarcelStör16年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.