私はfilemtime()
を使用して、カスタムWordPressテーマの異なる.cssファイルと.jsファイルのバージョン番号を追加しています。
私は ここで説明されている受け入れられた答え をガイドラインとして使いました。しかし、私はwp_retister_style()
とwp_register_script()
関数をそれぞれ私の.cssと.jsファイルを登録するために使い、そしてwp_enqueue_style()
とwp_enqueue_script()
を通してそれらをロードします。例として、私はこのようにsigle.cssファイルを登録しています。
wp_register_style('xyz_single', get_template_directory_uri() . '/css/single.css', false, filemtime(get_template_directory() . '/css/single.css'));
上記の関数の4番目のパラメータは、スタイルシートに?ver = nnnnnnnn を追加します。最終的な出力はsingle.css?ver=nnnnnnnnのようになります。ここで nnnnnnnn は変更されたファイルのタイムスタンプを表す番号です。テーマを変更したときに確実に再ロードするようにして、キャッシュの問題を解決してください。
さて、私の質問に。
私の得意なテーマでは、rtl.cssを使用します。これはwp_head()
が呼び出されると自動的に読み込まれます。では、どうやってバージョン番号を含めるためにrtl.cssを追加するのですか?
header.phpでは、style.cssを次のようにロードしています。
<link href="<?php echo get_stylesheet_uri() . '?ver=' . filemtime(get_stylesheet_directory() . '/style.css'); ?>" rel="stylesheet" type="text/css" />
上記のようにwp_register_style()
を使用し、その後にwp_enqueue_style()
を使用して、他のすべてのスタイルシートをロードしています。これが一例です。
wp_register_style('xyz_single', get_template_directory_uri() . '/css/single.css', false, filemtime(get_template_directory() . '/css/single.css'));
wp_enqueue_style('xyz-single');
しかし、header.phpでwp_head()
を呼び出すと、rtrt.cssが自動的に読み込まれます。 wp_head()
がどのようにrtl.cssをロードするのか--- この素晴らしい記事を読む してください。それで私の質問、もし自動的に呼ばれたらどうやってrtl.cssにバージョン番号を追加することができますか?
あなたはWordPressの自動方法を使ってrtl.cssを読み込んでいます。つまり、rtl.cssテーマフォルダ内のWordPressが現在の言語と現在の方向を示している場合は自動的にロードされます(質問にこの情報を追加する必要があります)。ファイル)。このプロセスでは、ロケールスタイルシートのURLを変更するために使用できるlocale_stylesheet_uri
を定義しているので、versionパラメータを追加できます。
add_filter( 'locale_stylesheet_uri', function ($localized_stylesheet_uri) {
$time_ver = filemtime( get_stylesheet_directory() . '/rtl.css' );
return add_query_arg( array('ver' => $time_ver), $localized_stylesheet_uri );
});
依存関係も処理する必要がある場合は、他のCSSファイルと同じようにrlt.cssファイルにwp_enqueue_style
をロードする必要があります。 "auto"の方法で依存関係を処理する方法はありません。
あなたが指摘した記事に基づいて、それは2つの簡単な選択肢があるように思えます
remove_action( 'wp_head', 'locale_stylesheet' );
そして自分のコードでそれをエンキューしてください。
global $$wp_locale;
$stylesheet_dir_uri = get_stylesheet_directory_uri();
$dir = get_stylesheet_directory();
$locale = get_locale();
if ( !empty($wp_locale->text_direction) && file_exists("$dir/{$wp_locale->text_direction}.css") )
enqueue "$stylesheet_dir_uri/{$wp_locale->text_direction}.css";
'locale_stylesheet_uri'
フィルタを使用して、あなたがURLに好む接尾辞を追加するか、単に''
を返して#1のように自分でそれをエンキューする