WordPress有哪些不同尺寸的缩略图,如何完全禁用&批量删除

本文将详细介绍WordPress将产生哪些尺寸的缩略图,这些缩略图一般用在什么地方的,应该保留哪些(根据实际)?应当如何完全禁止WordPress生成缩略图,以及如何批量删除掉没有用的缩略图…

WordPress 有哪些缩略图,如何禁用并删除(2024)

文章目录隐藏
  1. 1、WordPress 有哪些不同尺寸的缩略图
  2. 2、如何彻底禁止 WordPress 生成缩略图
  3. 3、如何删除 WordPress 自动产生的缩略图文件
  4. 4、应当如何使用 WordPress 缩略图功能

在测试本站 EXIF 显示的时候,发现 uploads 目录中单幅图片的缩略图竟然多达 9 个,这能忍??然后我开始思考并查阅:WordPress 为什么会生成这么多缩略图,都有哪些不同尺寸的缩略图,以及有没有什么办法批量删除掉这些缩略图呢?带着这些疑问我按照网上的教程测试并按个人需求对本 WordPress 博客进行了瘦身,本文则是本次折腾的经验总结。

1、WordPress 有哪些不同尺寸的缩略图

回忆了一下,本站图片文章最多的当属北京印象:紫禁城、颐和园、国家博物馆和太古里,这篇游记中的正文图片多达 141 张,且分辨率和图像大小都很高(五一节后人少天气好)。可见如果不进行任何 WordPress 优化,那么就这一篇文章就将产生一千多个缩略图文件,占用不少磁盘空间!目前,如果你上传的图片超过 2560 像素,WordPress 默认将生成 7 个不同大小的缩略图,如下:

缩略图名称图像尺寸
缩略图( Thumbnail )(大小取决于媒体设置。默认为 150 像素)
中等大小( Medium )(大小取决于媒体设置。默认为 300 像素)
大尺寸( Large )(大小取决于媒体设置。默认为 1024 像素)
中大尺寸( Medium Large )768 像素
2x 中大尺寸( 2x Medium Large )1536 像素
2x 大尺寸( 2x Large )2048 像素
缩放( Scaled )2560 像素
WordPress 默认将生的缩略图

以上图像中的前三个是 WordPress 默认的最为常见的缩略图,可以在仪表盘-设置-媒体设置中自定义尺寸,如果全部写成 0 则能阻止他们的产生。它们通常用于内置主题设置的缩略图位置以及响应式页面,第三方主题也会按需调取,应用范围很广泛。比如本站右侧主边栏“最近文章”小工具,如果开启图像,则会调取上表中的缩略图( Thumbnail )。如果这三个缩略图被禁用,以后在发布文章的图片属性设置里边将有且仅有“全尺寸”这一选项,意味着在前端页面访问时大概率会加载原图。

中间三个更大尺寸的缩略图,一般是 WordPress 系统(需结合其他控制函数)根据浏览器屏幕尺寸,为加快访问速度自适应加载合适尺寸图像而设置的(即响应式)。可以试试打开浏览器无痕模式下的开发者工具,点击显示/隐藏设备工具栏,将屏幕设置成手机,同时可以打开“节流模式”,模拟手机网络差时的访问效果。以本站为例,当访问一个带缩略图的文章时,首先展示给访客的是 2x 中大尺寸( 2x Medium Large )缩略图,当点击该图试图放大时,加载原图。

WordPress文章图片加载方式
WordPress 文章图片加载方式

可见,配合 WordPress 系统或主题的懒加载(lazyload)可以节省很多流量。以下是该页面的 HTML 片段:

WordPress文章图片加载方式
WordPress 文章图片加载方式

表格中最后一张以-scaled 命名的图像是当上传的图片超过 2560 像素产生的,是默认 WordPress 前端能显示的最大图像,这四个尺寸的缩略图是在 WordPress 核心文件中定义的,需要进一步操作才能关闭。

除此之外,咱们的主题和插件还会按需生成不同尺寸的缩略图。以本博主题为例,它用以下这段代码将一张图片生成了 8 副缩略图,用于不同位置、不同显示屏幕、设备的自适应缩放。这里边的核心函数add_image_size()用以生成任意尺寸的图像,部分主题按需还有个set_post_thumbnail_size()能专门生成自定尺寸的“特色图像”。

add_image_size( 'impeka-grve-large-rect-horizontal', $size_large_landscape_wide['width'], $size_large_landscape_wide['height'], true );
add_image_size( 'impeka-grve-small-square', $size_small_square['width'], $size_small_square['height'], true );
add_image_size( 'impeka-grve-small-rect-horizontal', $size_small_landscape['width'], $size_small_landscape['height'], true );
add_image_size( 'impeka-grve-small-rect-vertical', $size_small_portrait['width'], $size_small_portrait['height'], true );
add_image_size( 'impeka-grve-medium-square', $size_medium_square['width'], $size_medium_square['height'], true );
add_image_size( 'impeka-grve-medium-rect-horizontal', $size_medium_landscape['width'], $size_medium_landscape['height'], true );
add_image_size( 'impeka-grve-medium-rect-vertical', $size_medium_portrait['width'], $size_medium_portrait['height'], true );
add_image_size( 'impeka-grve-fullscreen', $size_fullscreen['width'], $size_fullscreen['height'], false );

2、如何彻底禁止 WordPress 生成缩略图

将以下代码循环引入进 function.php 中,这段代码能禁止 WordPress 生成所有缩略图(仅保留原始上传的图像)。唯一需要编辑的是针对最后一个函数,remove_image_size('another-size');应按实际填入你主题或插件中定义的缩略图名称,比如remove_image_size('impeka-grve-small-rect-horizontal');

// 彻底禁止 WordPress 生成缩略图
function shapeSpace_disable_image_sizes($sizes) {
	
	unset($sizes['thumbnail']);    // 禁用 thumbnail size
	unset($sizes['medium']);       // 禁用 medium size
	unset($sizes['large']);        // 禁用 large size
	unset($sizes['medium_large']); // 禁用 medium-large size
	unset($sizes['1536x1536']);    // 禁用 2x medium-large size
	unset($sizes['2048x2048']);    // 禁用 2x large size
	
	return $sizes;
	
}
add_action('intermediate_image_sizes_advanced', 'shapeSpace_disable_image_sizes');

// 禁用缩放尺寸
add_filter('big_image_size_threshold', '__return_false');

// 禁用其他图片尺寸
function shapeSpace_disable_other_image_sizes() {
	
	remove_image_size('post-thumbnail'); // 禁用 set_post_thumbnail_size() 函数生成的图像
	remove_image_size('another-size');   // 禁用缩略图,引号里边应为 add_image_size() 定义的名称
	
}
add_action('init', 'shapeSpace_disable_other_image_sizes');

除此之外,也有很多插件可以实现以上甚至更多关于缩略图的功能,比如:Disable Responsive Images Complete。以上代码来自Wpdaxue

3、如何删除 WordPress 自动产生的缩略图文件

一般情况下,WordPress 上传的图像会保留文件原始名称和数据。如牧羊人博客.jpg,产生的缩略图除“缩放”外均以原名-裁剪宽度 x 裁剪高度存储,比如牧羊人博客-1536x960.jpg,若这张图超大,那还会产生一张“缩放”图像,名为牧羊人博客-scaled.jpg。因此,我们只需要找到这些缩略图并批量删除即可。

首先用 Putty 或相关工具登录进服务器终端,然后用cd命令进入 WordPress 附件文件夹 uploads,接着在此文件夹中用findrm命令查找并删除即可。为了安全咱可以按年甚至按月操作,比如:

cd /www/wwwroot/shephe.com/wp-content/uploads/2018/04

进入到 2018 年 4 月的目录后,先查找并列出缩略图文件,确认是否能安全删除。以下命令行的意思是查找并列出当前目中文件名含有三位数×三位数三位数以上×三位数以上序列的文件。

find . -name '*[0-9][0-9][0-9]x[0-9][0-9][0-9]*'

目视检查无误后,删除之:

find . -name '*[0-9][0-9][0-9]x[0-9][0-9][0-9]*'  -exec rm -f {} \;

为了图方便,你可以cd ..退回到uploads大目录,同时调整通配符放大上面命令行中的查找范围…用以下这句基本上就能删掉 WordPress 所有的缩略图,请一定谨慎操作。

find . -name '*[0-9][0-9]x[0-9][0-9]*'  -exec rm -f {} \;

然后用以下命令删除掉文件名以-scaled 结尾的“缩放”缩略图:

find . -name '*-scaled.*'  -exec rm -f {} \;

4、应当如何使用 WordPress 缩略图功能

已经到这里了,你可能已经思考过了:真的需要禁用并删掉所有缩略图么?答案当然是否定的!事实上,如果禁用删除所有缩略图,意味着 WordPress 系统以后在任何地方都将直接使用原始图像,这必定加剧网络传输负担影响访问速度。同时,某些主题可能因为 CSS 设置不当,导致图片不能正常渲染,以至于浏览错位的情况。最为致命的是:以前调用的缩略图,将会直接显示访问错误显示成 404!

所以我的建议是:至少保留一个缩略图,但最好不要完全删除历史产生的缩略图文件。再结合本文第一节的说明,相信你已经有了自己的打算,我自己则完全屏仅用了 WordPress 系统的 7 个缩略图,保留了主题的 4 个不同比例和尺寸的缩图。

为什么了呢?第一是因为 WordPress 系统所有缩图均会删除掉原始的 EXIF 信息,这将影响我的照片展示完整性;第二是因为现目前服务器宽带已越来越廉价,不必要过分牺牲效果照顾性能;第三则是因为本站主题的可扩展性,保不齐后面会设计成什么页面,所以保留了几个不同比例的缩图。

因此为了兼顾 EXIF 和文件大小,我一般会在本地压缩图像后再上传,部分内文图片会转换成 Webp 文件…最后,推荐两个完全免费的工具:Caesium 批量图像压缩anyWebp 批量转换器

1920 1200 Kevin's
「WordPress 有哪些缩略图,如何禁用并删除(2024)」有 16 条评论
  • 灰常记忆
    04/14/2024 at 05:41 回复

    缩略图太多 占用空间很大

  • 1900
    04/11/2024 at 11:16 回复

    另外,评论区评论人信息处,字段名称和记住的信息重叠在一起了,比如「您的页面」和「https://1900.live」重叠

  • 1900
    04/11/2024 at 11:15 回复

    是准备做科普站吗,哈哈

    • Kevin
      04/11/2024 at 11:39 回复

      最近确实在丰富本站的内容,不过不会做WordPress的科普站…毕竟不专业,也不打算多学。
      近期更新的关于WordPress都是我在本站折腾的结果,算是个记录,免得忘了~

      我倒是有意做摄影相关的,可能会比较频繁更新关于拍照、后期相关的内容。
      至于评论框这个,是个官方bug,我等官方修复~

      • S
        04/11/2024 at 14:28 回复

        不是官方bug,只要把

        #respond .comment-form .grve-form-inner label {
        position: abosolute
        }

        改为
        position: relative 即可。

        • Kevin
          04/11/2024 at 16:21 回复

          好嘞,我按你这个先改着,
          我还说等个更新包呢~hah

          • S
            04/11/2024 at 16:51 回复

            你让老外给你更新包,属实想多了

          • S
            04/11/2024 at 16:53 回复

            别忘了themestyle.min.css和themestyle.css都要改。

            • Kevin
              04/11/2024 at 18:10 回复

              这主题一直在保持更新的,前阵子我发现之后反馈过,说是下一个更新处理。
              btw,你提供行没有解决问题~

              • S
                04/11/2024 at 20:44

                #respond .comment-form .grve-form-inner label {
                position: relative !important;
                }
                然后把缓存都刷掉。

            • Kevin
              04/13/2024 at 11:34 回复

              缓存没问题,我这儿没改一点css就会另外生成个文件。。这个relative没解决问题,至少在Firefox里面看起来是这样。。

              Chrome里面也不对,等等再说~

            • Kevin's Space
              04/26/2024 at 11:08 回复

              现在应该正常了吧?我借助ai改了一点js

              textInputEffect: function() {
              var t = e("#grve-comment-form").find(".grve-form-input-item");

              // page load
              t.each(function() {
              "" !== e(this).val() && e(this).parent().addClass("grve-input-filled");
              })

              // focus
              t.on("focus", function() {
              e(this).parent().addClass("grve-input-filled")
              }),
              t.on("blur", function() {
              "" === this.value.trim() && e(this).parent().removeClass("grve-input-filled")
              })
              }

              • S
                04/26/2024 at 11:45

                好了。

  • 段先森
    04/11/2024 at 09:51 回复

    有WordPress图片压缩的插件吗,一般都是截图上传

    • Kevin
      04/23/2024 at 18:29 回复

      很多,但是效果都不好,而且自定义程度低,还不如本地处理好之后在上传。。

  • xige
    04/11/2024 at 09:40 回复

    好文,收藏备用,近期干货很多

发表评论

请输入关键词…