如何讓W(xué)ordPress支持上傳SVG格式圖片并顯示在媒體庫中

下面由WordPress教程欄目給大家介紹讓wordpress支持上傳svg格式圖片并顯示在媒體庫中的方法,希望對需要的朋友有所幫助!

如何讓W(xué)ordPress支持上傳SVG格式圖片并顯示在媒體庫中

因SVG格式圖片特性,可能會被插入惡意代碼,網(wǎng)站容易被攻擊,所以出于安全考慮WordPress默認(rèn)不支持SVG格式圖片上傳,另外不像網(wǎng)上說SVG格式圖片有那么高的應(yīng)用價值,除了一些網(wǎng)頁上的小圖標(biāo)可以使用SVG圖片外,正常的彩色圖片,如果使用SVG格式毫無優(yōu)勢可言。不過有時還確實需要這個SVG圖片比如我主題的LOGO圖片,如果使用PNG圖片在手機上不是很清晰,采用SVG格式則無此問題。

如何讓W(xué)ordPress支持上傳SVG格式圖片?

可以將下代碼添加當(dāng)前主題函數(shù)模板functions.php中:

讓W(xué)ordPress支持上傳SVG,并只管理員有此權(quán)限

//?只允許管理員上傳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*=&#39;.svg&#39;]{width: 100%;height: auto;}.components-responsive-wrapper__content[src*=&#39;.svg&#39;] {position: relative;}</style>"; });

網(wǎng)上有很多以上類似的代碼,但都不支持媒體庫網(wǎng)格模式顯示SVG圖片,下面的代碼可以實現(xiàn):

//?媒體庫網(wǎng)格模式顯示SVG圖片 function?zm_display_svg_media($response,?$attachment,?$meta){ if($response['type']?===?'image'?&amp;&amp;?$response['subtype']?===?'svg+xml'?&amp;&amp;?class_exists('SimpleXMLElement')){ try?{ $path?=?get_attached_file($attachment-&gt;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'????????=&gt;?$height, 'width'?????????=&gt;?$width, 'url'???????????=&gt;?$src, 'orientation'???=&gt;?$height?&gt;?$width???'portrait'?:?'landscape', ); } } catch(Exception?$e){} } return?$response; } add_filter('wp_prepare_attachment_for_js',?'zm_display_svg_media',?10,?3);

另一個相對代碼較少的支持媒體庫網(wǎng)格模式顯示SVG圖片代碼,不過如果開啟調(diào)試模式會有錯誤提示,但不影響使用。

//?媒體庫網(wǎng)格模式顯示SVG圖片 function?zm_svg_metadata($data,?$post_id)?{ $data?=?array( 'sizes'?=&gt;?array( 'large'?=&gt;?array( 'file'?=&gt;?pathinfo(wp_get_attachment_url($post_id),?PATHINFO_BASENAME) ) ) ); return?$data; } add_filter('wp_get_attachment_metadata',?'zm_svg_metadata',?10,?2);

至于加這個功能用于什么,那要看你用的主題是否有這個功能需要了,直接FTP上傳后獲取鏈接也一樣在網(wǎng)頁中使用。

嫌折騰代碼麻煩,可以使用下面的相關(guān)插件:

SVG?Support Enable?SVG Safe?SVG(據(jù)說該插件可以檢測并去除SVG中的惡意代碼,與250+110有的一拼) WP?SVG?images Easy?SVG?Support Enable?SVG?Uploads ......

?

?

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊9 分享