ホームページ > 記事 > CMS チュートリアル > WordPress で SVG 形式の画像のアップロードとメディア ライブラリへの表示をサポートする方法
次のコラム WordPress チュートリアル では、WordPress で SVG 形式の画像のアップロードをサポートし、メディア ライブラリに表示できるようにする方法を紹介します。友人の役に立てば幸いです。必要としている!
SVG 形式の画像の特性上、悪意のあるコードが挿入され、Web サイトが攻撃されやすいため、セキュリティ上の理由から、WordPress では SVG 形式の画像のアップロードをサポートしていませんまた、SVG形式の画像はネット上で利用価値が高いと言われていますが、Webページ上の一部の小さなアイコンなどでSVG画像が使用できる場合を除き、通常のカラー画像ではSVG形式を使用するメリットはありません。ただし、テーマのロゴ画像など、この SVG 画像が本当に必要な場合もありますが、携帯電話で PNG 画像が鮮明でない場合は、SVG 形式を使用するとこの問題は発生しません。
WordPress で SVG 形式の画像のアップロードをサポートするにはどうすればよいですか?
現在のテーマ関数テンプレート function.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>"; });
インターネット上には同様のコードが多数ありますが、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);
もう 1 つは比較的コードが少なく、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);
この機能が何に使用されるかについては、使用しているテーマにこの機能が必要かどうかによって異なりますが、Web ページで直接 FTP アップロードした後にリンクを取得するために使用することもできます。
コードをいじるのが面倒な場合は、次の関連プラグインを使用できます:
SVG Support Enable SVG Safe SVG(据说该插件可以检测并去除SVG中的恶意代码,与250+110有的一拼) WP SVG images Easy SVG Support Enable SVG Uploads ......
以上がWordPress で SVG 形式の画像のアップロードとメディア ライブラリへの表示をサポートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。