Как убрать параметр версии (?ver=X.X.X) у подключаемых стилей и скриптов в WordPress
Пример использования
Я экспериментировал с функцией Workspace в Chrome Dev Tools. Она позволяет редактировать файл напрямую в Dev Tools, после чего обновлять таблицу стилей (или даже компилировать и затем обновлять!).
Однако, как описано в вопросе на StackOverflow "Chrome's “Auto-Reload Generated CSS” not reloading page when SASS recompiles CSS", параметры 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

Стандартное поведение wp_enqueue_[style/script]()
Значение по умолчанию для аргумента $version
функции wp_enqueue_style()
- это false
. Однако это означает, что стилям будет присвоена версия WordPress вместо отсутствия версии.
Решение
Благодаря "Remove version from WordPress enqueued CSS and JS", я узнал недокументированный факт: если передать null
в качестве версии, она будет полностью удалена!
Пример
wp_enqueue_style( 'wpse-styles', get_template_directory_uri() . '/style.css', array(), null );
Важное замечание
Стоит отметить, как указано в вопросе, что это следует делать только во время разработки. Параметр версии помогает с кэшированием (и его отсутствием) для посетителей сайта, поэтому в большинстве случаев его лучше не изменять.

Спасибо за ваш пост, mrwweb.
Я нашел другое решение этой проблемы - создание очень простого плагина, который можно деактивировать, когда сайт больше не находится в разработке.
<?php
/*
Название плагина: Удаление версии WordPress в стилях и скриптах
*/
function switch_stylesheet_src( $src, $handle ) {
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'switch_stylesheet_src', 10, 2 );
?>
Я потратил несколько минут, пытаясь найти это решение. Решил поделиться еще одним вариантом здесь, вместо создания нового вопроса/ответа.

Это правильный ответ. Используйте этот фильтр во время разработки и удалите его после запуска сайта.

Гораздо лучше, чем удаление и повторная очередь стилей. Также применимо к скриптам с фильтром script_loader_src

развивая предложение @ricardo-andres, код, применимый в любое время, особенно для ресурсов на CDN (например, jQuery) - мы избавляемся от query-параметра в ресурсах, имеющих версию в своих именах
function clean_src( $src, $handle ) {
if (preg_match('_\d[^\?/]*\?_', $src))
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'clean_src', 10, 2 );
add_filter( 'script_loader_src', 'clean_src', 10, 2 );
