Cegah Parameter URL Versi (? Ver = XXX) pada Enqueued Styles & Script

12

Gunakan Kasing

Saya telah bereksperimen dengan fitur Workspace Dev Tools Chrome. Ini mencakup kemampuan untuk mengedit file secara langsung di Dev Tools dan mengatur refresh stylesheet yang disimpan itu sendiri (atau bahkan mengkompilasi dan kemudian menyegarkan!).

Namun, seperti yang didokumentasikan dalam pertanyaan StackOverflow "Chrome" Auto-Reload Generated CSS "tidak memuat ulang halaman saat SASS mengkompilasi ulang CSS" , parameter URL pada stylesheet URL mencegah Chrome memperhatikan perubahan.

Hasil yang diinginkan

Itu berarti bahwa hanya selama pengembangan , saya ingin menghapus ?ver=X.X.Xdari <link>keluaran stylesheet normal wp_enqueue_style(). Dengan kata lain, saya ingin default href:

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

untuk menjadi ini:

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

Jawaban:

12

wp_enqueue_[style/script]()Perilaku default

The nilai default untuk $versionargumen dari wp_enqueue_style()is false. Namun, default itu hanya berarti bahwa stylesheet diberikan versi WordPress .

Larutan

Berkat "Hapus versi dari WordPress enqueued CSS dan JS" , saya mempelajari fakta tidak berdokumen bahwa melewatinya nullsebagai versi akan menghapus versi sama sekali!

Contoh

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

Peringatan Peringatan

Perlu ditunjukkan, seperti disebutkan dalam pertanyaan, bahwa ini mungkin hanya boleh dilakukan selama pengembangan (seperti dalam penggunaan khusus). Parameter versi membantu dengan caching (dan bukan caching) untuk pengunjung situs dan jadi mungkin harus dibiarkan sendiri dalam 99% kasus.

mrwweb
sumber
8

Terima kasih atas kiriman Anda, mrwweb.

Saya menemukan solusi lain untuk ini, dengan membuat plugin yang sangat sederhana Anda dapat menonaktifkan ketika situs tidak lagi dalam pengembangan.

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

?>

Saya menghabiskan beberapa menit mencoba menemukan solusi ini. Pikir saya mungkin berbagi opsi lain di sini daripada membuat Pertanyaan / Jawaban baru.

Ricardo Andres
sumber
tidak berfungsi ...
reggie
Ini jawaban yang benar. Gunakan filter ini saat mengembangkan dan menghapusnya setelah ditayangkan.
dtbaker
Jauh lebih baik daripada gaya dequeue dan antrian. Juga berlaku untuk skrip dengan filterscript_loader_src
Dharma