问题描述
我在我的函数 PHP 文件中有一个片段,允许我上传 SVG 文件。从今天升级到最新版本的 WP,我无法再上传 svgs 。我也尝试了 CSS 技巧网站的第二个代码片段,也不工作。
有人知道 a) 最后一次更新可能导致了什么,以及 b) 有谁知道一个工作。
这是我通常使用的代码:
function svg_mime_types( $mimes ) {
mimes['svg'] = 'image/svg+xml';
return $mimes;}
add_filter( 'upload_mimes', 'svg_mime_types' );
非常感谢
保罗。
最佳解决方案
在 WordPress 4.7.1 a change was introduced 中,检查上传文件的真实 MIME 类型。这会中断上传文件类型,如 SVG 或 DOCX 。 WordPress Core 中已经存在此问题的门票,您可以在这里阅读更多关于这一点:
-
一些 Non-image 文件在 4.7.1 之后无法上传 (https://core.trac.wordpress.org/ticket/39550)
-
SVG 上传支持在 4.7.1(https://core.trac.wordpress.org/ticket/39552)
临时和推荐的解决方法 (直到此问题被修复的时间) 是以下插件:禁用 Real MIME 检查
如果你不想使用这个插件,这里有同样的功能:
add_filter( 'wp_check_filetype_and_ext', function($data, $file, $filename, $mimes) {
global $wp_version;
if ( '4.7.2' !== $wp_version ) {
return $data;
}
$filetype = wp_check_filetype( $filename, $mimes );
return [
'ext' => $filetype['ext'],
'type' => $filetype['type'],
'proper_filename' => $data['proper_filename']
];
}, 10, 4 );
请注意,此修补程序包含版本检查,以便在 WordPress 更新后立即禁用该修复程序。
编辑
这个问题最初在 4.7.2 中被修正。但是,由于 4.7.2 was an urgent security release,修复没有使它成为该版本。现在应该在 4.7.3 中修复。
次佳解决方案
似乎这样可能与这张票相关的 https://core.trac.wordpress.org/ticket/39552,看起来像在 4.7.1 中被破坏的东西
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。