不知道大家有没有关注过 WordPress 5.3 的更新说明,个人认为其中比较重要的两点一是全面兼容 PHP 7.4 了(虽然还没出正式版本),另一个就是对媒体文件(图片)新增的功能了。
前者没什么好说的,我这里主要是想说说这个新增的功能。升级到 WordPress 5.3 后,新上传的图片只要尺寸宽或者高大于 2560px,那么 WordPress 便会把原图强制缩放裁剪出来一个新版本的 2560px 大小的图,且将此图文件名最后添加 -scaled 标记并替代 full 尺寸里的原图。
熟悉 WordPress 的人都知道 WordPress 可以设置三个不同的裁剪尺寸,而 full 尺寸是在这个限制之外的,原本是用来指代原始图片的,现在有了这么个新功能后,明面上我们就没有办法在文章中插入原始图片了。当然,原始图片还是存在的,你打开图片查看的时候把网址最后面的文件名去掉 -scaled 便能看到原图。
关于这个功能的介绍和一些讨论,可以看这里:https://make.wordpress.org/core/2019/10/09/introducing-handling-of-big-images-in-wordpress-5-3/
看讨论可以看出,大家对此的反应基本上有两种,一种称赞的,一种批评的,对于萌茶我来说,我是倾向于后者的。这个裁剪的功能本身其实没什么问题,如果只是多生成一种尺寸的话,我倒是不介意多消耗点空间。但令人恼火的是,这导致我没办法在我的文章里很好的调用原始图片了。
为了验证我上面说的问题,我找了张图片来测试。下面这张就是我临时找到的图片,尺寸为 2894×2039,刚好够 2560px 的阈值,那么让我测试一下,上传之后是不是会被裁剪吧。
大家点开看看完整图,是不是文件名加了个 -scaled,大小变成 2560px 的了?
OK,我看了看自己的服务器,原始图片确实还在,那么问题来了,我怎么调用原图?
图片尺寸选择完整?好的,只有 2560 的给你:
通过块选项把图片链接到媒体库文件?好的,链接到了 -scaled 版本的,效果就是上图的图片。
那么你告诉我,新功能我知道了,图片也让你裁剪替换了,你保留原图了,我到哪里使用原图去?
答案是你只能通过手动输入链接的方式来使用,也就是写文章的时候在块设置里插入 url 链接,自己删除后面那个 -scaled:
也许官方确实考虑到了这么个问题,所以预留了 wp_get_original_image_path() 来给你调用原图,可是我想吐槽的是,这是给第三方留的,那么 WordPress 自己呢?第三方还有办法调用原图,可 WordPress 5.3 都出来了你告诉我写文章就只能和原图告别了吗?
当然,就这个功能本身我倒觉得没有什么大问题,问题出在 WordPress 5.3 没法很好的和这个功能配合上,不管是媒体库,还是写文章,我都没办法很方便的看到和插入大图的原图了,别人怎么想的我不知道,至少我觉得是有些影响体验了。
不过嘛,吐槽归吐槽,WordPress 还是得继续用的,希望未来的版本能再调整下,至少能给个链接到大图的选项什么的吧,就现在来说,我选择把这个功能禁用了,就在我写完这篇文章之后。
如果不出意外的话,短时间里上面那张被裁剪的 full 图应该会是我博客里唯一一张带有 -scaled 结尾的图了。禁用的代码我写在下面了,这个是官方提供的,应该没什么问题,复制到主题的 function.php 文件里就行:
add_filter( 'big_image_size_threshold', '__return_false' );