Удаление ?ver= из wp_register_script
Я получаю предупреждения в тесте скорости Google из-за query-строк в моих скриптах. Пытаюсь убрать их, передавая false в качестве аргумента для этого параметра. Однако это не дает эффекта:
wp_register_script('myscript', get_bloginfo('template_directory').'/scripts.myversionnumber.js',false,false,true);
wp_enqueue_script('myscript');
Примечание: часть "myversionnumber" в имени файла js - это мой способ контроля кэширования/версионирования, в отличие от подхода с ?ver=, который, по данным теста Google Pagespeed, создает проблемы для некоторых прокси-серверов:
Удалите query-строки из статических ресурсов Включение публичного кэширования в HTTP-заголовках для статических ресурсов позволяет браузеру загружать ресурсы с ближайшего прокси-сервера, а не с удаленного сервера-источника. Подробнее
Рекомендации для этой страницы
Ресурсы с "?" в URL не кэшируются некоторыми прокси-серверами. Удалите query-строку и закодируйте параметры в URL для следующих ресурсов:
Предисловие
Я решил эту задачу совсем иначе, чем SickHippie и chrisguitarguy, и думаю, что это не тот способ, которым предполагалось её решать, но у меня это отлично работает.
Код...
Я поместил этот фрагмент кода в конец файла functions.php моей темы:
function remove_cssjs_querystring( $src ) {
if( strpos( $src, '?rev=' ) ) // скопируйте/вставьте эту строку и следующую, чтобы убрать то, что вам нужно из конца ваших css/js
$src = remove_query_arg( 'rev', $src );
if( strpos( $src, 'ver=' ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_querystring', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_querystring', 10, 2 );
Откуда пришла идея...
Я искал решение в Google и нашел эту статью, но у меня оставалась проблема с css/js: в этот момент мой код всё ещё содержал (кое-где) в конце что-то вроде .../some-stylesheet.css?rev=..., и я подумал немного расширить фрагмент кода, чтобы включить всё, что могло быть после .css.