溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

讓WordPress支持上傳SVG格式圖片并顯示在媒體庫中的方法

發(fā)布時間:2020-12-11 14:18:12 來源:億速云 閱讀:599 作者:小新 欄目:建站服務器

這篇文章將為大家詳細講解有關讓WordPress支持上傳SVG格式圖片并顯示在媒體庫中的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

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

如何讓WordPress支持上傳SVG格式圖片?

可以將下代碼添加當前主題函數(shù)模板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: 100%;height: auto;}.components-responsive-wrapper__content[src*='.svg'] {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' && $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);

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

// 媒體庫網(wǎng)格模式顯示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上傳后獲取鏈接也一樣在網(wǎng)頁中使用。

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

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

關于讓WordPress支持上傳SVG格式圖片并顯示在媒體庫中的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI