!
也想出现在这里? 联系我们
广告位

WordPress支持上传SVG图片并显示在媒体库中

因 SVG 格式图片特性,可能会被插入恶意代码,网站容易被攻击,所以出于安全考虑 WordPress 默认不支持 SVG 格式图片上传,另外不像网上说 SVG 格式图片有那么高的应用价值,除了一些网页上的小图标可以使用 SVG 图片外,正常的彩色图片,如果使用 SVG 格式毫无优势可言。不过有时还确实需要这个 SVG 图片比如我主题的 LOGO 图片,如果使用 PNG 图片在手机上不是很清晰,采用 SVG 格式则无此问题。

如何让 WordPress 支持上传 SVG 格式图片?可以将下代码添加当前主题函数模板 functions.php 中,让 WordPress 支持上传 SVG,并只管理员有此权限

  1. // 只允许管理员上传SVG图片
  2. if (current_user_can( 'manage_options' )) {
  3. add_filter('upload_mimes', function ($mimes) {
  4. $mimes['svg'] =L 6 W ? # X 'image/svg+xml';
  5. returi P ^ j -n $mimes;
  6. });
  7. }

媒体库列表模式显示 SVG 图片

  1. // 媒M ` a H U k体库列表模式显示SVG图片
  2. add_action('admin_head', function () {
  3. echo "<style>table.medil ) n * Fa .column-title .media-ico: o N P 8 Sn img[src*='.svg']{width: 100%;height: auto;}.components-respB H yonsive-wrapper__content[src*='.svg'] {position: relative;}</style>";
  4. });

网上有很多以上类似的代码,但都不支持媒体库网格模式显示 SVG 图片,下面的代码可以实现:

  1. // 媒体库网格模式显示SVG图片
  2. function zm_display_svg_media($r7 8 {esponse, $attachment, $met! ~ _ % = W X ; Ja){
  3. if($response['type'] === 'image' && $response['subtype'&z 9 M p#93; === 'svg+xml' && class_exists^ ^ ? F & ^ s0;'SimpleXMLElement')@ 7 M ^41;{
  4. try {
  5. $path = get_attacheF A d 3 9 o 5 +d_file($attachment->ID);
  6. if&t 6 [ A @#40;@file_exists($path)&a u l T ? , )#41;{
  7. $svg = new SimpleXMLEli ` g ` |ement(@file_get_contents($path));
  8. $src = $responsev d H['url'];
  9. $width = (= H 3 ) W j t Sint) $svg['width'];
  10. $height = (int) $svg['height'];
  11. $response['image'] = compact( 'src', 'width', 'height' );
  12. $response['thumb'] = compact( 'src', 'width', 'height' );
  13. $response['sizesS ? ( 8 [ r m']['full'] = array(
  14. 'height' => $height,
  15. 'width' => $width,
  16. 'url' => $src,
  17. 'orientation' => $height &g\ k n { w : V 6t; $width ? 'portrait' : 'landscape',
  18. );
  19. }
  20. }
  21. catch(ExceptionV : - f $e){&^ } !#t a c ~125;
  22. }
  23. rD | _eturnv c ~ 4 f Z ) / $response;
  24. }^ d 4 T
  25. add_filter('wp_prep4 E * b Y Uar7 \ 4e_attachmen} . J A Z K yt_for_js', 'zm_display_svg_media', 10, 3);

另一个相对代码较少的支持媒体库网格模式显示 SVG 图片代码,不过如果开启调试模式_ J M Z -会有错误提示,但不影响使用。

  1. // 媒体库网格模式显示SVG图片
  2. function zm_svg_metadata($data, $N k E + 6 9 zpost_id) {
  3. $data = array(
  4. 'Q ` $ l X $ 0siM = 0 o Gzes' => array(
  5. 'large' => array(
  6. 'fi\ p & p 7 & tle' => pathinfo(4 ? Ewp_get_attachment_ua ] C U ? , ( s 4rl($post_id), PATHINFO_BASENAME)
  7. )
  8. )/ 4 O D j O l J :;
  9. );
  10. return $data;
  11. }
  12. add_filter&x - _ k ; m u \ K#40;'wp_get_atI Q 7 L R B Htachment_N ? Dmetadata', 'zm_svg_met$ s l n n Tadata', 10, 2);

至于加这个功能用于什么,那要看你用的主题是否有这个功能需要了,直接 FTP 上传后获取链0 E 2 % M p p 5接也一样在网页中使用。

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress 编辑器复制粘贴上传图片

2022-9-9 14:59:35

WordPress教程

WordPress给订阅者开启上传文件权限

2022-9-9 15:00:45

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索