回答:
子テーマのスタイルシート自体でバージョンを更新できます...
/*
Theme Name: Twenty Fourteen Child
Theme URI: http://example.com/twenty-fourteen-child/
Description: Twenty Fourteen Child Theme
Author: John Doe
Author URI: http://example.com
Template: twentyfourteen
Version: 1.1.2 <---- Update here
*/
これを行う最良の方法は、子テーマのスタイルシート(style.css)を必要なコメント(テーマ名、説明などのように、ワードプレスがテーマを認識できるようにする)だけを空にして、別のcssファイルを作成することですテーマ名フォルダ/css/main.css
その後function.phpで、ファイルを変更するたびに新しい「バージョン」を持つことができます。
function my_scripts_and_styles(){
$cache_buster = date("YmdHi", filemtime( get_stylesheet_directory() . '/css/main.css'));
wp_enqueue_style( 'main', get_stylesheet_directory_uri() . '/css/main.css', array(), $cache_buster, 'all' );
}
add_action( 'wp_enqueue_scripts', 'my_scripts_and_styles', 1);
ロジック:
ファイルを保存するたびに、ファイルの変更時刻が変更されます。新しい時刻が日付関数に渡され、時刻(filemtimeは時刻を表す整数を返す)を日付形式に変換して、希望する形式の文字列にします。この例では、時間は分単位の精度でフォーマットされています。秒を追跡するように変更することもできます"YmdHis"
。その後、ファイルの新しい変更時刻が新しいバージョンとしてに渡されますwp_enqueue_style
。
参照 :
$cache_buster = wp_get_theme()->get('Version')
すると、のコメントブロックで指定されたバージョンが取得されますstyle.css
。参照としてcodex.wordpress.org/Function_Reference/wp_get_themeを参照してください。
wp_get_theme()->get('Version')
そのように機能するかどうかはわかりません)。
あなたがする必要があるのは、ハンドルによってメインスタイルを登録解除し、それからあなたのバージョン番号で再登録することです。この場合、ハンドルはstyle-css
です。
レンダリングされたスタイルシートのリンクを見て、使用する必要があるハンドルを決定できます。
<link rel='stylesheet' id='style-css-css' href='http://site-url/wp-content/themes/child-theme/style.css?ver=4.6.1' type='text/css' media='all' />
ここでidはstyle-css-css
、ハンドルがstyle-css
これをあなたの子テーマのfunction.phpに入れてください:
function wpse_145141_change_style_version(){
// First de-register the main stylesheet
wp_deregister_style( 'style-css' );
// Then add it again, using your custom version number
wp_register_style( 'style-css', get_stylesheet_uri(), array(), "VERSION_NUMBER" );
//finally enqueue it again
wp_enqueue_style( 'style-css');
}
add_action( 'wp_enqueue_scripts', 'wpse_145141_change_style_version');
現在の上位の回答はテーマに依存しています。テーマ開発者は、子テーマのバージョン番号を変数にしてから、エンキューするときにそれを子style.cssに追加する必要があるためです。私はこれをいくつかのテーマで見ましたが、多くはありません。以下は、子スタイルをfunctions.phpに登録するすべてのテーマで機能します-これ以上見たことのない古い@importルールでは機能しません。
子テーマのfunctions.phpには、次のようなものが必要です。
// enqueue the child theme stylesheet
function wp_schools_enqueue_scripts() {
wp_register_style( 'childstyle', get_stylesheet_directory_uri() . '/style.css' );
wp_enqueue_style( 'childstyle' );
}
add_action( 'wp_enqueue_scripts', 'wp_schools_enqueue_scripts', 11);
次のように変更すると、ファイルが保存されるたびにバージョン番号としてタイムスタンプが追加され、スタイルシートの変更ごとにローカルキャッシュを無効にすることができます。
// enqueue the child theme stylesheet
function wp_schools_enqueue_scripts() {
wp_register_style(
'childstyle',
get_stylesheet_directory_uri() . '/style.css',
array(),
filemtime( get_stylesheet_directory() . '/style.css' )
);
wp_enqueue_style( 'childstyle' );
}
add_action( 'wp_enqueue_scripts', 'wp_schools_enqueue_scripts', 11);
これが誰かを助けることを願っています。私は積極的に管理しているすべてのサイトでこれを使用しています。
代わりに、デフォルトのstyle.cssを使用して、私は一般的に使用wp_enqueue_style子テーマのfunctions.phpのまたは別の付属のphpファイルに。したがって、すべての子テーマの詳細を含むstyle.cssが子テーマに含まれますが、実際の子テーマのスタイル設定のために子テーマに個別のcssファイルを含めることができます(通常、これはアセット/ cssに配置します)子テーマ内のディレクトリ)。これにより、4番目のパラメーターでCSSバージョンを設定することもできます。例えば:
function theme_name_child_scripts() {
wp_enqueue_style( 'style-name', get_stylesheet_directory_uri() . '/assets/css/child-style.css', array(), '1.0.0', 'screen');
}
add_action( 'wp_enqueue_scripts', 'theme_name_child_scripts' );
アクションが正しい順序で読み込まれていない場合や、上記のwp_enqueue_styleの依存関係パラメーターを使用している場合は、アクションに優先度を追加できます。
add_action( 'wp_enqueue_scripts', 'theme_name_child_scripts', 20 );