子テーマを取得して最新バージョンのstyle.cssをロードできません


9

正しく設定された子テーマを使用しています。しかし、Childテーマstyle.cssの変更をサイトに反映させることができません。ブラウザーキャッシュを100万回空にしようとすると、機能しません。

私は子テンプレートファイルを作成しましたが、親テンプレートファイルを上書きします。

私はビューのソースに次のようにスタイルシートの最後にバージョン番号を付けることに気づきました:-私はバージョンを作成していませんが、style.css?ver = 3.9.1!

私が作成した別のサイトでは、スタイルシートのバージョン管理がないので、設定したくないときに自動的にスタイルシートに入れられるのはなぜですか。

どのように強制して、子のstyle.cssファイルの最新バージョンを使用し、バージョンを使用しないようにできますか?

これが私のサイトのURLです:-http: //www.peterswebservices.co.uk/


1
ブラウザキャッシングが最も明白な可能性ですが、サーバーキャッシングは同じ効果を引き起こす可能性があり、一部のISPや独立したサイトが提供するWeb "アクセラレータ"を引き起こす可能性もあります。
s_ha_dum 2014年

表示されているバージョン部分は、WordPressによって自動的に追加される現在のWordPressバージョンです。それを心配する必要はありません。
Pieter Goosen

回答:


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' );

これにより、元のスタイルシートが独自のバージョンに置き換えられます。別の親テーマを使用している場合は、style.cssの元のwp_enqueue_styleラベルを確認し、そのラベルを子テーマ内に複製します。変更を行うたびに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で使用した子テーマの「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' ) );
}

ただ、忘れてはいけない、ライブウェブサイトを起動する前に、これを削除します。

また、ホスティングサービスプロバイダーのキャッシング機能に注意して、この更新を有効にしてください。

著者によると

... filemtime()と組み合わせてWordPressにchildthemeスタイルシートを組み込み、ブラウザーに新しいバージョンのcssファイルをロードさせるのが最善の方法です。私は親スタイルにfilemtime()を使用しませんでした。触れることはなかったため、filemtime()はリソースを浪費するだけでした。

出典 2014年10月22日の記事「 CSSキャッシュを防止する」に対するDanielのコメント: https : //css-tricks.com/snippets/wordpress/prevent-css-caching/#comment-1586141


0

サイトを確認せずに問題を診断することはできませんが、共通の発生はメインのテーマであるcssが子のcssよりも優先されることです。!importantタグを使用してこれを無効にすることができます。

#element {
 color:#fff !important;
}

重要なタグは、そのcssを、同じ行のcssを持つ他のどのcssファイルよりも優先されるものとしてマークします

URLを教えてください。これが役立つかどうか


私は考えていない重要な問題であるが、ここに私のURL: - !peterswebservices.co.ukまた、私はGoogleのChromeでインスペクタを使用してCSSファイルの最新の変更をせずに、以前のバージョンを示すにドリルダウンします。
user1199360 2014年

0

私は同じ問題を抱えていましたが、デフォルトで何らかの種類のキャッシュがオンになっている新しいホストであることがわかりました。私は自分のコントロールパネルに行き、キャッシュをフラッシュしました、そしてそれはそれから正しいstyle.cssファイルを正しく提供しました。

?ver = 3.9.1は、(少なくとも私にとっては)赤いニシンであることがわかりました。キャッシュをフラッシュした後でも、CSSファイルのどこにも見つからない?ver = 3.9.1と表示されますが、すべて正常に動作しています。


1
?ver=3.9.1自動的にワードプレスによって追加されます。これはwordpressの現在のバージョンであり、テーマとは関係ありません:-)
Pieter Goosen 14

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 );
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.