Как убрать параметр версии (?ver=X.X.X) у подключаемых стилей и скриптов в WordPress

9 апр. 2015 г., 02:24:05
Просмотры: 17.3K
Голосов: 17

Пример использования

Я экспериментировал с функцией 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
0
Все ответы на вопрос 3
0
17

Стандартное поведение 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 );

Важное замечание

Стоит отметить, как указано в вопросе, что это следует делать только во время разработки. Параметр версии помогает с кэшированием (и его отсутствием) для посетителей сайта, поэтому в большинстве случаев его лучше не изменять.

9 апр. 2015 г. 02:24:05
4
10

Спасибо за ваш пост, 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 );

?>

Я потратил несколько минут, пытаясь найти это решение. Решил поделиться еще одним вариантом здесь, вместо создания нового вопроса/ответа.

27 июл. 2015 г. 03:53:23
Комментарии

не работает...

reggie reggie
16 нояб. 2016 г. 10:33:16

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

dtbaker dtbaker
26 июн. 2017 г. 03:24:27

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

Dharma Dharma
3 окт. 2018 г. 11:52:17

Класс! Сработало как надо.

Allen Gingrich Allen Gingrich
19 окт. 2021 г. 01:50:46
0

развивая предложение @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 );

25 сент. 2020 г. 18:06:45