让WordPress支持上传webp格式图片方法
webp格式的图片可以在原有图片质量几乎不变的情况下高度压缩图片。
在浏览器支持方面,现在主流的浏览器也都支持WebP格式,况且像微信公众号这样的大平台早已开始使用WebP图片,因此没有理由不将博客的插图换成WebP了。
默认情况下,WordPress不支持上传WebP格式的图片,在当前使用主题的functions.php
里添加以下代码即可:
- function bzg_filter_mime_types( $array ) {
- $array['webp'] = 'image/webp';
- return $array;
- }
- add_filter( 'mime_types', 'bzg_filter_mime_types', 10, 1 );
虽然现在已经可以上传WebP格式的图片了,但在媒体列表中看不到缩略图,这是因为WordPress在用wp_generate_attachment_metadata()函数生成图片数据时,使用了file_is_displayable_image()函数判断文件是否为图片,判断WebP图片的结果为否,因此中断了保存图片数据的操作。
解决办法是在主题的functions.php
里添加以下代码:
- function bzg_file_is_displayable_image($result, $path) {
- $info = @getimagesize( $path );
- if($info['mime'] == 'image/webp') {
- $result = true;
- }
- return $result;
- }
- add_filter( 'file_is_displayable_image', 'bzg_file_is_displayable_image', 10, 2 );
以上两段代码都加入主题的functions.php在这之后上传WebP格式图片不会再有问题了,但之前已经上传的其他格式的图片要替换为WebP格式还是比较麻烦,分享一下解决过程:
编写了一小段脚本读取数据库中所有的图片,使用wp_update_attachment_metadata()函数更新这些图片的数据;
- 使用“Ubuntu下批量转换WebP格式图形工具”将wp-content/uploads目录中的图片全部转换为WebP格式,如果你是Windows系统,可以搜索一下相应的转换工具;
- Gedit编辑器正则表达式替换wp_postmeta表中meta_key为_wp_attached_file的图片名称,可以看到这个表中meta_key为_wp_attachment_metadata对应的数据已经在第2步中替换了;
- Gedit编辑器正则表达式替换文章数据表中插入的图片链接;
以上内容来自互联网,这里推荐使用格式工厂转换图片格式
♏文章资源部分来源于互联网,仅供学习交流使用,若要商业化使用,请支持正版
♏若不听劝告,出现任何后果,均于本站无关
♏如果您喜欢本站,点击这儿不花一分钱捐赠本站
♏本文地址:http://blog.17u7.com/274.html
♏若不听劝告,出现任何后果,均于本站无关
♏如果您喜欢本站,点击这儿不花一分钱捐赠本站
♏本文地址:http://blog.17u7.com/274.html
THE END
二维码