如何从wp_head中的文件源链接中删除文件版本?


9

我观察到wp_head每个.css.js文件的源链接中的函数都已添加?ver=1或基于文件/库版本的其他编号)。如何覆盖它们以将其删除?

我认为此问题导致缓存清单部分出现问题。

Answers:


16

您可以挂钩style_loader_src并在URL上script_loader_src运行remove_query_arg( 'ver', $url )

<?php
/* Plugin Name: Remove version parameter for scripts and styles */

add_filter( 'style_loader_src', 't5_remove_version' );
add_filter( 'script_loader_src', 't5_remove_version' );

function t5_remove_version( $url )
{
    return remove_query_arg( 'ver', $url );
}

没有此插件:

在此处输入图片说明

插件激活后:

在此处输入图片说明

在一种情况下,该操作将失败:当某人不使用脚本/样式API,而是在标头中添加了硬编码的字符串时。


整齐使用remove_query_arg()
henrywright

2

当我仍然必须从Google Fonts加载样式表时,这对我有用。

<?php
add_filter( 'script_loader_src', 'wpse130419_remove_script_version', 15, 1 );
add_filter( 'style_loader_src',  'wpse130419_remove_script_version', 15, 1 );
function wpse130419_remove_script_version( $src ) {

    $url = explode( '?', $src );

    if ( $url[0] === 'http://fonts.googleapis.com/css' ) :
        $version = explode( '&ver=', $url[1] );
        $url[1]  = $version[0];
    endif;

    return ( $url[0] === 'http://fonts.googleapis.com/css' ) 
        ? "{$url[0]}?{$url[1]}"
        : $url[0]
    ;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.