您现在的位置是:首页 > cms教程 > WordPress教程WordPress教程
实现WordPress支持上传SVG格式图片并显示在媒体库中的方法
连解淦2023-07-13WordPress教程已有人查阅
导读因SVG格式图片特性,可能会入恶意代码,网站容易被攻击,所以出于安全考虑WordPress默认不支持SVG格式图片上传

因SVG格式图片特性,可能会入恶意代码,网站容易被攻击,所以出于安全考虑WordPress默认不支持SVG格式图片上传,另外不像网上说SVG格式图片有那么高的应用价值,除了一些网页上的小图标可以使用SVG图片外,正常的彩色图片,如果使用SVG格式毫无优势可言。不过有时还确实需要这个SVG图片比如我主题的LOGO图片,如果使用PNG图片在手机上不是很清晰,采用SVG格式则无此问题。
如何让WordPress支持上传SVG格式图片?可以将下代码添加当前主题函数模板functions.php中:
让WordPress支持上传SVG,并只管理员有此权限
// 只允许管理员上传SVG图片
if (current_user_can( 'manage_options' )) {
add_filter('upload_mimes', function ($mimes) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
});
}
媒体库列表模式显示SVG图片
// 媒体库列表模式显示SVG图片
add_action('admin_head', function () {
echo "<style>table.media .column-title .media-icon img[src*='.svg']{width: ;height: auto;}.components-responsive-wrapper__content[src*='.svg'] {position: relative;}</style>";
});
网上有很多以上类似的代码,但都不支持媒体库网格模式显示SVG图片,下面的代码可以实现:
// 媒体库网格模式显示SVG图片
function zm_display_svg_media($response, $attachment, $meta){
if($response['type'] === 'image' && $response['subtype'] === 'svg+xml' && class_exists('SimpleXMLElement')){
try {
$path = get_attached_file($attachment->ID);
if(@file_exists($path)){
$svg = new SimpleXMLElement(@file_get_contents($path));
$src = $response['url'];
$width = (int) $svg['width'];
$height = (int) $svg['height'];
$response['image'] = compact( 'src', 'width', 'height' );
$response['thumb'] = compact( 'src', 'width', 'height' );
$response['sizes']['full'] = array(
'height' => $height,
'width' => $width,
'url' => $src,
'orientation' => $height > $width ? 'portrait' : 'landscape',
);
}
}
catch(Exception $e){}
}
return $response;
}
add_filter('wp_prepare_attachment_for_js', 'zm_display_svg_media', 10, 3);
另一个相对代码较少的支持媒体库网格模式显示SVG图片代码,不过如果开启调试模式会有错误提示,但不影响使用。
// 媒体库网格模式显示SVG图片
function zm_svg_metadata($data, $post_id) {
$data = array(
'sizes' => array(
'large' => array(
'file' => pathinfo(wp_get_attachment_url($post_id), PATHINFO_BASENAME)
)
)
);
return $data;
}
add_filter('wp_get_attachment_metadata', 'zm_svg_metadata', 10, 2);
至于加这个功能用于什么,那要看你用的主题是否有这个功能需要了,直接FTP上传后获取链接也一样在网页中使用。嫌折腾代码麻烦,可以使用下面的相关插件:
SVG Support Enable SVG Safe SVG(据说该插件可以检测并去除SVG中的恶意代码,与250+110有的一拼) WP SVG images Easy SVG Support Enable SVG Uploads ......
本文标签:
很赞哦! ()
相关教程
图文教程
wordpress让一个页面显示所有文章的实现方法
1、复制一个page.php文件改为page-abc.php,并在WordPress后台新建一个页面,固定链接地址改为abc(这个abc可随意,但必须跟page-abc相对应)。
wordpress函数wpdb类使用方法介绍
WordPress为用户提供了一系列用于数据库操作的函数类--wpdb。Wpdb类建立在Justin Vincent编写并维护的ezSQL类的基础上。
wordpress关键词和描述怎么设置
众所周知,wordpress官方下载安装的程序,默认是没有关键词和描述的,只能填写网站标题和副标题。但是作为我们seoer来说,关键词是用来实时关注网站关键词排名的
禁止WordPress自动更新邮件通知的方法
默认情况下WordPress小版本安全更新后,会发送一封邮件通知您的站点已更新。如果你有多个WordPress站点,每个站都发一次就有些让人厌烦了
相关源码
-
(自适应)绿色宠物门诊兽医行业网站模板该绿色清爽风格网站模板专为宠物门诊与兽医诊所设计,基于PbootCMS内核开发,采用响应式布局确保手机、PC等多端体验一致,帮助宠物医疗机构高效构建线上服务平台。查看源码 -
(自适应)大型农业机械设备水稻玉米收割机网站pbootcms源码下载本模板基于PbootCMS内核开发,为农业机械设备制造与销售企业设计,特别适合水稻玉米收割机、拖拉机、播种机等农用机械展示。模板充分考虑了农机行业的特性,从产品展示到技术参数,从作业案例到售后服务查看源码 -
html5响应式pbootcms模板新闻资讯博客网站源码该模板采用PbootCMS内核开发,专为新闻资讯类网站打造,同时具备高度行业适配性--只需替换图文内容即可快速转型为企业官网、行业门户等各类站点。查看源码 -
(自适应)家政保洁保姆打扫卫生清灰服务pbootcms模板免费下载采用手工编写的DIV+CSS架构,代码结构清晰无冗余,加载速度优异。响应式设计适配各类终端设备,保障手机、平板、电脑端的一致浏览体验。查看源码 -
(自适应)宽屏大气红色机械设备pbootcms模板源码下载为机械设备制造企业设计的响应式网站模板,采用PbootCMS内核开发。宽屏布局突出设备展示效果,红色工业风格贴合机械行业属性,支持PC端与手机端自动适配查看源码 -
(自适应响应式)家电维修清晰服务网站pbootcms模板免费下载本模板基于PbootCMS内核开发,为维修服务类企业打造,特别适合家电维修、设备维护等行业使用。通过简洁直观的界面设计,帮助企业快速搭建专业级服务平台,实现线上业务高效管理。查看源码
| 分享笔记 (共有 篇笔记) |

