删除除Google地图API之外的查询字符串

时间:2013-09-15 作者:Bdalte

我有一个类似于网络上许多其他人的问题,但到目前为止仍然没有解决方案。

要删除查询字符串,我使用了以下代码:

function _remove_script_version( $src ){
    $parts = explode( \'?\', $src );
    return $parts[0];
}
add_filter( \'script_loader_src\', \'_remove_script_version\', 15, 1 );
add_filter( \'style_loader_src\', \'_remove_script_version\', 15, 1 );
我想知道的是,是否有人相信自己知道如何设置代码来排除googple map api查询字符串。

要修复以下错误:

“Google Maps API服务器拒绝了您的请求。请求中指定的“sensor”参数必须设置为“true”或“false”。

有人想知道如何解决这个问题吗?

2 个回复
最合适的回答,由SO网友:Eugene Manuilov 整理而成

首先,我强烈建议您不要删除javascript和样式表文件的查询部分。为什么?因为它们包含文件的版本。

为什么我需要它?我们需要向每个文件添加版本(只要可能),以防止版本冲突。当发布新版本的WP/plugin并从管理面板进行更新时,可能会出现这些冲突。在这种情况下,不会通知用户的浏览器存在新版本的脚本,也不会下载它,但会使用存储在浏览器缓存中的以前版本。

但是,如果您确信不需要它,并且仍然希望修剪查询字符串,可以通过将函数更改为以下视图来完成:

function _remove_script_version( $src ){
    return add_query_arg( \'ver\', false, $src );
}
add_filter( \'script_loader_src\', \'_remove_script_version\', 15, 1 );
add_filter( \'style_loader_src\', \'_remove_script_version\', 15, 1 );

SO网友:s_ha_dum

这将是我的方法:

function _remove_script_version( $src ){
  $parsed = parse_url($src);

  if (isset($parsed[\'query\'])) {
    parse_str($parsed[\'query\'], $qrystr);
    if (isset($qrystr[\'ver\'])) {
      unset($qrystr[\'ver\']); 
    }
    $parsed[\'query\'] = http_build_query($qrystr);
  }
  // return http_build_url($parsed); // elegant but not always available

  $src = \'\';
  $src .= (!empty($parsed[\'scheme\'])) ? $parsed[\'scheme\'].\'://\' : \'\';
  $src .= (!empty($parsed[\'host\'])) ? $parsed[\'host\'] : \'\';
  $src .= (!empty($parsed[\'path\'])) ? $parsed[\'path\'] : \'\';
  $src .= (!empty($parsed[\'query\'])) ? \'?\'.$parsed[\'query\'] : \'\';

  return $src;
}
add_filter( \'script_loader_src\', \'_remove_script_version\', 15, 1 );
add_filter( \'style_loader_src\', \'_remove_script_version\', 15, 1 );
你会明确地unset 特定的查询参数,在这种情况下,只有ver 参数,使其他所有内容保持不变。

至于查询字符串和缓存:https://stackoverflow.com/questions/850187/caching-from-urls-with-a-query-string

结束

相关推荐