Cover Image for WordPress で CSS・JS のキャッシュ読み込みを回避する

WordPress で CSS・JS のキャッシュ読み込みを回避する

 

CSS や JavaScript ファイルの更新が含まれるリリース作業後、確認時にローカルキャッシュが読み込まれて、「こちらでは変更が確認できないのですが?」のやり取りを回避する小技メモ。

やりたいこと

CSS や JS ファイルの読み込み時にバージョンのパラメータ( ver )を追加して、キャッシュを無効化する。

<link rel="stylesheet" href="path/to/main.min.css" type="text/css" media="all" />

<link rel="stylesheet" href="path/to/main.min.css?ver=1.1" type="text/css" media="all" />

ver の値にはファイル更新日時を使おう

wp_enqueue_style()wp_enqueue_script() では 4 番目の引数でver を指定できます。

$theme = wp_get_theme();
wp_enqueue_style( 'main', get_theme_file_uri('/path/to/main.min.css'), array(), $theme->get('Version'), 'all' );

で style.css に記述されたバージョンを ver の値として指定できますが、手作業でのバージョン書き換えが必要 + 差分が小さいリリース時には書き換えを忘れそう。漏れが無いようにファイルの更新日時を YmdHis の形式で取得して、ver に指定します。

$css_path = 'path/to/main.min.css';
$css_version = gmdate( 'YmdHis', filemtime( get_theme_file_path( $css_path ) ) );
wp_enqueue_style( 'main', get_theme_file_uri( $css_path ), array(), $css_version, 'all' );

JavaScript の読み込みも同様に指定しましょう。

$js_path = 'path/to/main.min.js';
$js_version = gmdate( 'YmdHis', filemtime( get_theme_file_path( $js_path ) ) );
wp_enqueue_script( 'main', get_theme_file_uri( $js_path ), array(), $js_version, true );

確認

サイトを表示して、ver の値として更新日時が付いているか確認しましょう。

<link rel="stylesheet" id="main-css" href="path/to/main.min.css?ver=20250130013247" type="text/css" media="all" />
<script type="text/javascript" id="main-js" src="path/to/main.min.js?ver=20250130101851"></script>

これでローカルキャッシュの読み込みを回避することができました。おつかれさまでした。