如何删除WordPress中未使用的图片

删除未使用图片的重要性

我发现,删除 WordPress 网站中未使用的图片虽然不会直接影响前端速度,但却能节省时间和服务器空间,下面是具体的好处:

  • 加强网站管理: 通过删除媒体库中的杂乱图片,简化了网站后台的工作,能更快更方便地找到并使用要找的图片。
  • 降低存储空间成本: 一些主机的存储空间有限。过多的图片需要你尽早升级主机,或删除未使用的图片
  • 更快的备份: 网站备份的大小会影响这项重要任务的完成速度和顺利程度。较大的网站需要更长的时间来备份和恢复。通过删除无用的图片,可以确保备份尽可能高效。
  • 更快的网站迁移: 如果您需要迁移网站,拥有一个更精简的媒体库可以让迁移过程更快、更不易出错。这就像搬家一样,多余的行李越少,搬家就越容易。

为什么每张图片都很重要

我在与客户的多次交谈中注意到,尤其是那些技术水平较低的客户,他们并不知道 WordPress 会为他们上传的每张图片创建多个版本。

根据图片文件本身、您的主题和 WordPress 设置的不同,WordPress 在服务器上创建的图片文件可能非常多,而您在媒体库中看到的只有一个。

WordPress 会在较小的屏幕上显示这些调整过大小的文件。这是加快网站速度的好方法,但会增加服务器上所需的文件数量和存储空间。

上传的一张照片的文件大小很容易就达到 3 MB,加上创建的所有调整过大小的版本,服务器上的总空间可能超过 6 MB。

查找未使用的图像

很多网站主甚至 WordPress 开发人员都不知道: 后台的 “Attached to”(附加到)部分只能告诉你图片上传到了哪篇文章,但不能告诉你图片是否还在那里使用,也不能告诉你图片可能被添加到了其他什么地方。

通过下面的SQL查询来确定未使用的图片

SELECT p1.ID, p1.post_title
FROM wp_posts p1
WHERE p1.post_type = 'attachment'
AND p1.post_mime_type LIKE 'image%'
AND NOT EXISTS (
    SELECT 1
    FROM wp_posts p2
    WHERE p2.post_status = 'publish'
    AND p2.post_content LIKE CONCAT('%', p1.guid, '%')
);

你可以每隔几个月运行一次这个查询,然后通过 URL 对它们进行一次完整的数据库搜索,以确保这些图片没有在其他地方使用过。

我说的其他地方是什么意思?

有很多地方都会在内容之外使用图片:

  • Logo and Favicons
  • 文章的精选图片
  • 页面生成器用于插图和背景图片
  • 高级自定义字段可让你上传图片作为元数据

幸运的是,有一种更直接的方法,就是使用Image Source Control插件

删除未使用的图片

尽管作为 WordPress 开发人员,我知道如何在数据库中查找和删除未使用的图片,但这仍然是一项耗时而乏味的任务。

因此,我们使用Image Source Control插件,安装激活插件后

媒体 > 未使用的图片会列出所有可能未使用的图片。

我通常使用批量选项对所有列出的图片进行深入检查,然后查看所有与任何文章无关的图片。这包括某些选项或文章元数据中提到的图片。

delete unused images deep check

最后,检查未使用的图片并批量删除,以清理空间。