ホームページ  >  記事  >  CMS チュートリアル  >  WordPress で SVG 形式の画像のアップロードとメディア ライブラリへの表示をサポートする方法

WordPress で SVG 形式の画像のアップロードとメディア ライブラリへの表示をサポートする方法

藏色散人
藏色散人転載
2020-12-09 13:53:052508ブラウズ

次のコラム WordPress チュートリアル では、WordPress で SVG 形式の画像のアップロードをサポートし、メディア ライブラリに表示できるようにする方法を紹介します。友人の役に立てば幸いです。必要としている!

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

インターネット上には同様のコードが多数ありますが、SVG 画像を表示するためのメディア ライブラリ グリッド モードをサポートするものはありません。次のコードを実行できます:

// 媒体库网格模式显示SVG图片
function zm_display_svg_media($response, $attachment, $meta){
if($response[&#39;type&#39;] === &#39;image&#39; && $response[&#39;subtype&#39;] === &#39;svg+xml&#39; && class_exists(&#39;SimpleXMLElement&#39;)){
try {
$path = get_attached_file($attachment->ID);
if(@file_exists($path)){
$svg                = new SimpleXMLElement(@file_get_contents($path));
$src                = $response[&#39;url&#39;];
$width              = (int) $svg[&#39;width&#39;];
$height             = (int) $svg[&#39;height&#39;];
$response[&#39;image&#39;]  = compact( &#39;src&#39;, &#39;width&#39;, &#39;height&#39; );
$response[&#39;thumb&#39;]  = compact( &#39;src&#39;, &#39;width&#39;, &#39;height&#39; );
 
$response[&#39;sizes&#39;][&#39;full&#39;] = array(
&#39;height&#39;        => $height,
&#39;width&#39;         => $width,
&#39;url&#39;           => $src,
&#39;orientation&#39;   => $height > $width ? &#39;portrait&#39; : &#39;landscape&#39;,
);
}
}
catch(Exception $e){}
}
return $response;
}
add_filter(&#39;wp_prepare_attachment_for_js&#39;, &#39;zm_display_svg_media&#39;, 10, 3);

もう 1 つは比較的コードが少なく、SVG 画像コードを表示するためのメディア ライブラリ グリッド モードをサポートしていますが、デバッグ モードをオンにするとエラー メッセージが表示されますが、使用には影響しません。

// 媒体库网格模式显示SVG图片
function zm_svg_metadata($data, $post_id) {
$data = array(
&#39;sizes&#39; => array(
&#39;large&#39; => array(
&#39;file&#39; => pathinfo(wp_get_attachment_url($post_id), PATHINFO_BASENAME)
)
)
);
return $data;
}
add_filter(&#39;wp_get_attachment_metadata&#39;, &#39;zm_svg_metadata&#39;, 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 サイトの他の関連記事を参照してください。

声明:
この記事はzmingcx.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。