以下由WordPress教學欄位介紹讓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圖片
rrreee網路上有很多以上類似的程式碼,但都不支援媒體庫網格模式顯示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>"; });
另一個相對程式碼較少的支援媒體庫網格模式顯示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);
至於加這個功能用於什麼,那要看你用的主題是否有這個功能需要了,直接FTP上傳後獲取連結也一樣在網頁中使用。
嫌折騰程式碼麻煩,可以使用下面的相關外掛程式:
// 媒体库网格模式显示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);
#
以上是如何讓WordPress支援上傳SVG格式圖片並顯示在媒體庫中的詳細內容。更多資訊請關注PHP中文網其他相關文章!