两种方法实现WordPress网站媒体库上传SVG文件

WordPress网站的媒体库默认可以上传JPG、PNG、GIF等格式的图片,不支持直接上传 SVG 格式的图,那么如果需要上传SVG 图片,该怎么办呢?下面就来看下具体的操作方法。

SVG英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形,是一种图像文件格式;SVG还是一种用XML定义的语言,可以用来描述二维矢量及矢量或栅格图形。

一、插件法

WordPress网站媒体库中上传 SVG 文件,需要安装相应的插件,比如”Safe SVG”或”SVG Support”等,安装完插件后,在WordPress仪表盘中找到插件的设置选项。根据插件的说明,可能需要对一些选项进行配置,例如允许SVG文件上传、设置权限等。完成插件设置后,可以进入WordPress的媒体库页面(在仪表盘中选择“媒体”>“媒体库”),点击“添加新文件”按钮,然后选择并上传SVG文件。

二、代码法

只需要将以下代码添加到当前主题的functions.php文件中并保存更新文件即可。

//WordPress媒体库允许上传SVG文件
add_filter(
	'upload_mimes',
	function ( $upload_mimes ) {
		if ( ! current_user_can( 'administrator' ) ) {
			return $upload_mimes;
		}

		$upload_mimes['svg']  = 'image/svg+xml';
		$upload_mimes['svgz'] = 'image/svg+xml';

		return $upload_mimes;
	}
);
add_filter(
	'wp_check_filetype_and_ext',
	function ( $wp_check_filetype_and_ext, $file, $filename, $mimes, $real_mime ) {

		if ( ! $wp_check_filetype_and_ext['type'] ) {

			$check_filetype  = wp_check_filetype( $filename, $mimes );
			$ext             = $check_filetype['ext'];
			$type            = $check_filetype['type'];
			$proper_filename = $filename;

			if ( $type && 0 === strpos( $type, 'image/' ) && 'svg' !== $ext ) {
				$ext  = false;
				$type = false;
			}

			$wp_check_filetype_and_ext = compact( 'ext', 'type', 'proper_filename' );
		}

		return $wp_check_filetype_and_ext;

	},
	10,
	5
);

需要注意的是,上传SVG文件可能存在一些安全风险,因为SVG文件可以包含可执行代码,确保只从可信来源获取SVG文件,并谨慎处理未知的SVG文件。此外,如果使用的是共享托管平台,他们可能有自己的限制和安全策略,可能会阻止上传SVG文件。


【AD】CoalCloud(碳云)深圳移动大带宽VPS,9折优惠,142.2元/月,1C1G/300M带宽@3T月流量

【AD】美国洛杉矶/香港/日本VPS推荐,回程电信CN2 GIA线路,延迟低、稳定性高、免费备份_搬瓦工