エンキューされたスタイルとスクリプトでバージョンURLパラメータ(?ver = XXX)を禁止する


12

使用事例

私はChromeのDev Tools Workspace機能を実験してきました。これには、Dev Toolsでファイルを直接編集し、保存されたスタイルシートを自動的に更新する(またはコンパイルしてから更新する!)機能が含まれます。

ただし、StackOverflowの質問「Chromeの「自動生成されたCSSの自動再読み込み」でSASSがCSSを再コンパイルしてもページが再読み込みされない」に記載されているように、スタイルシートのURLのURLパラメータは、Chromeが変更に気付かないようにします。

望ましい結果

つまり、開発中のみ、による?ver=X.X.X通常のスタイルシート<link>出力からを削除したかったのwp_enqueue_style()です。言い換えれば、私はデフォルトが欲しかったのですhref

http://localhost/mysite/wp-includes/style.css?ver=4.1.1

代わりにこれになる:

http://localhost/mysite/wp-includes/style.css

回答:


12

デフォルトのwp_enqueue_[style/script]()動作

デフォルト値$version引数wp_enqueue_style()IS false。ただし、そのデフォルトは、スタイルシートに代わりにWordPressバージョンが与えられることを意味します。

解決

「WordPressエンキューCSSおよびJSからバージョンを削除する」のおかげでnull、バージョンとして渡すとバージョンが完全に削除されるという文書化されていない事実を知りました。

wp_enqueue_style( 'wpse-styles', get_template_directory_uri() . '/style.css', array(), null );

警告リマインダー

質問で述べたように、これはおそらく(特定のユースケースのように)開発中にのみ行う必要があることを指摘する価値があります。バージョンパラメータは、サイトの訪問者のキャッシュ(およびキャッシュではない)に役立ちます。そのため、99%のケースではおそらくそのままにする必要があります。


8

投稿ありがとうございます、mrwweb。

これに対する別の解決策を見つけました。非常にシンプルなプラグインを作成することで、サイトが開発中でなくなったときに無効にすることができます。

<?php

/*
Plugin name: Strip WP Version in Stylesheets/Scripts
*/

function switch_stylesheet_src( $src, $handle ) {

        $src = remove_query_arg( 'ver', $src );
        return $src;
}
add_filter( 'style_loader_src', 'switch_stylesheet_src', 10, 2 );

?>

私はこの解決策を見つけるために数分を費やしました。新しい質問/回答を作成する代わりに、ここで別のオプションを共有するかもしれないと思いました。


動作しません...
レジー

これは正解です。開発中にこのフィルターを使用し、ライブになったら削除します。
dtbaker 2017年

デキューおよびキューのスタイルよりもはるかに優れています。フィルター付きのスクリプトにも適用script_loader_src
Dharma
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.