Как удалить версию WordPress из некоторых .css/.js файлов

29 июл. 2016 г., 12:18:29
Просмотры: 32.4K
Голосов: 7

Я знаю, что могу использовать следующую функцию для удаления версии из всех .css и .js файлов:

add_filter( 'style_loader_src', 'sdt_remove_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'sdt_remove_ver_css_js', 9999 );
function sdt_remove_ver_css_js( $src ) {
    if ( strpos( $src, 'ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}

Но у меня есть некоторые файлы, например style.css, для которых я хочу добавить версию следующим образом:

function css_versioning() {
    wp_enqueue_style( 'style',
        get_stylesheet_directory_uri() . '/style.css' ,
        false,
        filemtime( get_stylesheet_directory() . '/style.css' ),
        'all' );
}

Но предыдущая функция удаляет также и эту версию. Как сделать так, чтобы эти две функции работали вместе?

0
Все ответы на вопрос 3
0
10

Вы можете проверить текущий handle перед удалением версии.

Вот пример (не тестировался):

add_filter( 'style_loader_src',  'sdt_remove_ver_css_js', 9999, 2 );
add_filter( 'script_loader_src', 'sdt_remove_ver_css_js', 9999, 2 );

function sdt_remove_ver_css_js( $src, $handle ) 
{
    $handles_with_version = [ 'style' ]; // <-- Настройте под свои нужды!

    if ( strpos( $src, 'ver=' ) && ! in_array( $handle, $handles_with_version, true ) )
        $src = remove_query_arg( 'ver', $src );

    return $src;
}
29 июл. 2016 г. 12:48:22
4

С момента написания этого вопроса в WordPress многое изменилось. Вот новый способ предотвратить отображение версии WordPress:

// удаляем версию из head
remove_action('wp_head', 'wp_generator');

// удаляем версию из rss
add_filter('the_generator', '__return_empty_string');

// удаляем версию из скриптов и стилей
function remove_version_scripts_styles($src) {
    if (strpos($src, 'ver=')) {
        $src = remove_query_arg('ver', $src);
    }
    return $src;
}
add_filter('style_loader_src', 'remove_version_scripts_styles', 9999);
add_filter('script_loader_src', 'remove_version_scripts_styles', 9999);

Не требуется редактирования. Просто добавьте в functions.php и готово. Или создайте простой пользовательский плагин. Выбор за вами! :)

Оригинальная статья

26 дек. 2018 г. 19:31:37
Комментарии

этот ответ не скопирован напрямую отсюда? Всегда следует указывать автора оригинала, если только вы не написали эту статью сами

Vishwa Vishwa
13 мар. 2019 г. 12:57:43

Добавил ссылку на оригинальную статью. Без обид. Я просто хотел помочь людям решить проблему. Я никогда не присваивал авторство себе.

Amr Amr
14 мар. 2019 г. 20:19:07

Я не утверждал, что вы это сделали, просто показал правильный способ. Вот и всё :)

Vishwa Vishwa
15 мар. 2019 г. 06:16:44

Отлично! К сожалению, это не отвечает на вопрос автора о том, как сохранить это для определённого CSS.

norman.lol norman.lol
28 мая 2019 г. 23:34:24
0

Для указания конкретного файла

// удаление версии из скриптов и стилей
function remove_version_scripts_styles($src) {
    if (strpos($src, 'yourfile.js')) {
        $src = remove_query_arg('ver', $src);
    }
    return $src;
}
add_filter('script_loader_src', 'remove_version_scripts_styles', 9999);
17 авг. 2020 г. 07:02:02