由于 SVG 是一种基于 XML 的矢量图形格式,容易被嵌入恶意脚本,因此官方默认关闭此功能。
试着用纯代码的方式来开启wordpress SVG格式图片上传功能。目前看使用Block编辑器图片能正常上传和显示。
只需将特定的过滤函数挂载到 WordPress 的 upload_mimes 上,即可解除文件类型限制。
// 允许上传,但可能会导致 WordPress 无法正确识别 MIME 类型,从而在媒体库中报错或无法显示图标。
function minuo_allow_additional_mime_types($mime_types) {
if ( ! current_user_can( 'administrator' ) ) {
return $mime_types;
}
$mime_types['svg'] = 'image/svg+xml';
$mime_types['svgz'] = 'image/svg+xml';
$mime_types['webp'] = 'image/webp';
$mime_types['ico'] = 'image/vnd.microsoft.icon';
return $mime_types;
}
add_filter('upload_mimes', 'minuo_allow_additional_mime_types');
// 确保系统对 SVG 文件类型进行正确验证
function minuo_wp_check_filetype_and_ext( $wp_check_filetype_and_ext, $file, $filename, $mimes, $real_mime ) {
if ( ! $wp_check_filetype_and_ext['type'] ) {
$check_filetype = wp_check_filetype( $filename, $mimes );
$ext = $check_filetype['ext'];
$type = $check_filetype['type'];
$proper_filename = $filename;
if ( $type && 0 === strpos( $type, 'image/' ) && 'svg' !== $ext ) {
$ext = false;
$type = false;
}
$wp_check_filetype_and_ext = compact( 'ext', 'type', 'proper_filename' );
}
return $wp_check_filetype_and_ext;
}
add_filter('wp_check_filetype_and_ext', 'minuo_wp_check_filetype_and_ext' , 10, 5);
感谢你的代码,问题已经解决了。
好的。
字也svg 是不是也是密码的一种了。我猜。
以前上学的时候,接触过很多种藏信息的手段。
什么专业课.还是兴趣
说是专业不就暴露了?所以我是自学的。
自学的强.
连SVG也要支持,难道是做设计的?
试一试而已……
不过svg有一定风险。
svg可以包含有效的HTML,那么就存在注入攻击的风险。
这里有一篇文章解释了这些风险:
标题:SVG Security Risks – not just a scalable graphic
链接:https://www.securesystems.de/blog/svg-security-risks-not-just-a-scalable-graphic/