WordPress移除静态资源查询字符串代码放置位置咨询
关于WordPress移除查询字符串的问题解答
嘿,我来帮你捋清楚这个问题~
一、代码放在functions.php的位置
其实只要代码放在<?php起始标签之后,且本身没有语法错误,放在文件顶部或末尾都能正常运行。不过更稳妥的建议是放在文件末尾:
- 避免和主题开头的初始化代码(比如主题设置、常量定义)产生冲突
- 方便后续自己查找和修改这段自定义代码
二、你当前代码的核心问题
你现在的代码只处理了脚本(script_loader_src)和样式(style_loader_src)的?ver查询字符串,但你提到问题集中在图片上——这段代码根本没对图片URL做任何处理!这就是你修改多次却没效果的原因。
三、针对图片的解决方案
要移除图片的查询字符串,需要添加专门针对图片的过滤规则。把下面的代码和你原来的代码合并,一起放在functions.php末尾即可:
// 移除脚本和样式的?ver查询字符串 function rm_query_string( $src ) { $parts = explode( '?ver', $src ); return $parts[0]; } if ( !is_admin() ) { add_filter( 'script_loader_src', 'rm_query_string', 15, 1 ); add_filter( 'style_loader_src', 'rm_query_string', 15, 1 ); } // 移除后台附件图片URL的查询字符串 function rm_image_query_string($url) { if (strpos($url, '?') !== false) { $url = preg_replace('/\?.*/', '', $url); } return $url; } add_filter('wp_get_attachment_url', 'rm_image_query_string', 10, 1); add_filter('wp_get_attachment_image_src', 'rm_image_query_string', 10, 1); // 移除文章内容中直接插入的图片URL查询字符串 function rm_content_image_query_string($content) { return preg_replace('/(src="[^"]+)\?[^"]*"/', '$1"', $content); } add_filter('the_content', 'rm_content_image_query_string', 10, 1);
四、重要提醒
- 修改
functions.php前一定要备份文件,避免语法错误导致网站无法访问 - 如果你用的是子主题,务必修改子主题的
functions.php,不要改父主题的,否则主题更新后你的修改会丢失
内容的提问来源于stack exchange,提问作者fares
相关产品推荐
相关产品推荐

