从wp寄存器脚本中删除?ver=

时间:2012-05-17 作者:Scott B

关于我脚本中的查询字符串,我在谷歌速度测试中遇到了很多麻烦。因此,我试图通过传递false作为该参数的参数来删除它们。然而,它似乎没有效果:

wp_register_script(\'myscript\', get_bloginfo(\'template_directory\').\'/scripts.myversionnumber.js\',false,false,true);
wp_enqueue_script(\'myscript\');
注:js文件名的“myversionnumber”部分是我控制缓存/版本控制的手段,而不是?ver=显然使一些代理服务器跳闸的方法(根据Google pagespeed测试):

Remove query strings from static resources 在HTTP头中为静态资源启用公共缓存允许浏览器从附近的代理服务器而不是从远程源服务器下载资源。了解更多信息

Suggestions for this page

具有“”的资源某些代理缓存服务器不会缓存URL中的。删除查询字符串并将参数编码到以下资源的URL中:

3 个回复
最合适的回答,由SO网友:SickHippie 整理而成

我认为必须将NULL作为第四个参数传递。

wp_register_script(
    \'myscript\',
    get_bloginfo(\'template_directory\').\'/scripts.myversionnumber.js\',
    false,
    NULL,
    true);
wp_enqueue_script(\'myscript\');

SO网友:chrisguitarguy

你可以通过null 作为版本值wp_register_scriptwp_enqueue_script 它应该删除查询字符串。

<?php
wp_enqueue_script(
   \'myscript\',
   \'/path/to/script.js\',
   array(),
   null
);

SO网友:vcoppolecchia

前言

我解决这个问题的方式与病态嬉皮士和chrisguitarguy有很大不同,我想这不是应该解决的方式,但对我来说确实很好。

代码

我把这段代码放在主题的末尾functions.php 文件:

function remove_cssjs_querystring( $src ) {
  if( strpos( $src, \'?rev=\' ) ) // copy/paste this line and the next one to take away what you want from the end of your 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 );
这个想法来自哪里我在谷歌上搜索它,我发现this article, 但我一直在使用css/js时遇到一个问题:此时,我的代码在末尾仍然有(这里和那里)类似的内容.../some-stylesheet.css?rev=... 我考虑对代码片段进行一点扩展,以包含可能需要的任何内容.css.

结束

相关推荐