1. 说明
WordPress偶尔在不登陆的情况下会丢图片
- 检查图片链接发现访问的是 image-18-1536×575.png
- 而有资源的图片是 image-18.png
如果由于一些特殊原因可能把缩略图删了,或者就是不希望 WordPress 自动生成缩略图,也不希望别人访问的时候给图片自动追加类似 -1536×575 这样的后缀(希望所有人直接访问原图)。
2. 禁用缩略图生成
可以现在设置-媒体中,将各种尺寸参数都设置为0。

但是依旧没有效果,因为 WordPress会固定再裁剪两个尺寸。
对于额外的两个尺寸,则需要修改 functions.php 文件(通常位于 wp-content/themes/主题名称/functions.php),在末尾添加
add_filter('intermediate_image_sizes_advanced', 'filter_image_sizes');
function filter_image_sizes($sizes) {
if (isset($sizes['medium_large'])) {
unset($sizes['medium_large']);
}
if (isset($sizes['1536x1536'])) {
unset($sizes['1536x1536']);
}
if (isset($sizes['2048x2048'])) {
unset($sizes['2048x2048']);
}
return $sizes;
}
add_filter('big_image_size_threshold', '__return_false');
添加后,新上传的文件发现不再会被裁剪。
3. 老图处理
经过上面步骤,新上传的文件发现不再会被裁剪。但是老的图片依旧有问题。
这是由于老的图片的属性没有改变,依旧记录了缩略图信息。图片信息可能如下:
array(
'width' => 1024,
'height' => 768,
'file' => '2023/10/image.jpg',
'sizes' => array(
'thumbnail' => array(
'file' => 'image-150x150.jpg',
'width' => 150,
'height' => 150,
'mime-type' => 'image/jpeg'
),
'medium' => array(
'file' => 'image-300x225.jpg',
'width' => 300,
'height' => 225,
'mime-type' => 'image/jpeg'
),
'medium_large' => array(
'file' => 'image-768x576.jpg',
'width' => 768,
'height' => 576,
'mime-type' => 'image/jpeg'
),
// 其他裁剪尺寸...
),
'image_meta' => array(
// 其他元数据,如拍摄信息
)
)
此时则需要批量处理老图,让老图根据新的配置不再生成缩略图
可以使用插件 Force Regenerate Thumbnails 批量更新

4. OSS或者图片不在本地的情况
如果使用了阿里云OSS或者其他方式,让图片保存在其他地方。用Force Regenerate Thumbnails则会失败。
仅需要暂时把图片导回到本地,执行完 Regenerate 再删除即可
5. 新图覆盖老图的情况
搞完上面操作后,个人浏览已经没问题了,都是原图,不过在编辑时出了问题,新的图会覆盖老的图。
没完全搞懂为什么图片命名没有像以前那样不断递增。
不过修改了一下图片的命名规则,改为时间+随机数,使文件不重名就能解决