В WordPress при подключении файлов JavaScript и CSS к URL автоматически добавляется параметр ?ver=версия. Это делается для контроля кеша браузера и предотвращения загрузки устаревших файлов. Однако иногда возникает необходимость убрать этот параметр из URL, например, для улучшения SEO или из-за особенностей CDN, которые некорректно работают с параметрами в URL.
Почему WordPress добавляет параметр версии к JS и CSS
Когда вы подключаете скрипты и стили через функции wp_enqueue_script и wp_enqueue_style, WordPress автоматически добавляет параметр версии, который берется из версии темы, плагина или ядра, или указывается вручную.
Это помогает браузеру понимать, когда файл обновился, и сбрасывать кеш. Без этого параметра при обновлении сайта пользователи могут видеть старую версию скриптов и стилей.
Однако, бывают ситуации, когда версия в URL мешает работе сторонних сервисов, или вы хотите, чтобы URL были чище.
Удаление параметра версии из URL: основные варианты
Самый простой способ — использовать фильтр style_loader_src и script_loader_src для удаления параметра ver из URL при выводе.
Пример функции, которая удаляет версию из URL:
function wp_puzzle_remove_version_from_src($src) {
if (strpos($src, 'ver=') !== false) {
$src = remove_query_arg('ver', $src);
}
return $src;
}
add_filter('style_loader_src', 'wp_puzzle_remove_version_from_src', 9999);
add_filter('script_loader_src', 'wp_puzzle_remove_version_from_src', 9999);Этот код нужно добавить в файл functions.php вашей темы или в собственный плагин.
Однако такой подход может привести к проблемам с кешированием. Браузер при обновлении сайта не поймет, что файл обновился, и будет использовать старую версию.
Как сохранить кеширование при удалении версии из URL
Чтобы сохранить преимущества кеширования, можно применить версионирование через имя файла — так называемый "cache busting". Например, переименовывать файл стилей и скриптов с указанием хэша или даты изменения.
Но WordPress по умолчанию не поддерживает такой механизм. Поэтому можно использовать плагины или реализовать собственное решение.
Пример решения с использованием filemtime
Мы можем динамически подставлять время последнего изменения файла как версию, но при этом не передавать параметр ?ver=, а вписывать время в имя файла через wp_enqueue_style и wp_enqueue_script.
Пример функции для подключения скрипта с временной меткой в имени файла (для локальных файлов):
function wp_puzzle_enqueue_script_with_timestamp() {
$script_path = get_template_directory() . '/js/script.js';
$script_url = get_template_directory_uri() . '/js/script.js';
if (file_exists($script_path)) {
$version = filemtime($script_path);
} else {
$version = false;
}
wp_enqueue_script('wp_puzzle_script', $script_url, array(), $version, true);
}
add_action('wp_enqueue_scripts', 'wp_puzzle_enqueue_script_with_timestamp');В этом случае параметр ?ver=timestamp будет использоваться, но timestamp — это число, которое меняется при каждом обновлении файла, что оптимально для кеширования.
Удаление параметра версии и подмена URL через фильтр
Если вы хотите совсем убрать параметр ver, но добавить хэш в имя файла, можно использовать фильтр clean_url и самостоятельно генерировать URL с инлайновым хэшем в имени файла, но это сложнее и требует дополнительной настройки серверов и правил переписывания.
Плагины для управления версиями и кешированием JS и CSS
Если вы не хотите писать свой код, можно воспользоваться готовыми решениями. Например:
- Clearfy Pro — плагин для оптимизации WordPress, который позволяет управлять версиями скриптов и стилей, удалять лишние параметры из URL и улучшать кеширование.
Подробнее о Clearfy Pro на WpShop - Asset CleanUp — позволяет отключать ненужные скрипты и стили, а также управлять их кешированием и версиями.
Практические советы по безопасности и SEO при удалении параметра версии
Удаление параметра ver убирает информацию о версии плагинов и тем, что снижает риск атаки по известным уязвимостям. Но при этом может ухудшить производительность из-за проблем с кешированием.
Поэтому рекомендуется использовать подход с динамическим версионированием через filemtime или доверять плагинам, которые грамотно сбалансируют эти задачи.
Также стоит проверить работу CDN и кешей после внесения изменений, чтобы избежать сбоев в загрузке стилей и скриптов.
Итоговые рекомендации
- Удаляйте параметр версии только если это действительно необходимо.
- Используйте
filemtimeдля контроля кеша, если работаете с локальными файлами. - Проверяйте сайт после изменений на ошибки в загрузке ресурсов.
- Рассмотрите плагины Clearfy Pro или Asset CleanUp для удобного управления версиями и кешированием.