WordPress 支持 WebP格式图片上传方法

刚刚在写一篇用VUE实现视差滚动方法的文章时,需要上传WEBP格式的图片,没想到竟然不支持,发扬有事问度娘的传统找到了解决办法:

在已使用的主题functions.php里添加如下代码:

function mimvp_filter_mime_types( $array ) {
    $array['webp'] = 'image/webp';
    return $array;
}

add_filter( 'mime_types', 'mimvp_filter_mime_types', 10, 1 );

虽然现在已经可以上传WebP格式的图片了,但在媒体列表中看不到缩略图,这是因为WordPress在用wp_generate_attachment_metadata()函数生成图片数据时,使用了file_is_displayable_image()函数判断文件是否为图片,判断WebP图片的结果为否,因此中断了保存图片数据的操作。

解决办法依然是在已启用主题的functions.php里添加以下代码:

function mimvp_file_is_displayable_image($result, $path)
{
	$info = @getimagesize($path);
	if ($info['mime'] === 'image/webp') {
		$result = true;
	}
	return $result;
}
add_filter( 'file_is_displayable_image', 'mimvp_file_is_displayable_image', 10, 2 );

在这之后上传WebP格式图片,显示WebP格式图片,都不会再有问题了