我找到了一个插件,可以为我做到这一点:Additional image sizes (zui)
删除图像大小时,不会为上载的所有新图像创建该大小。但是,为已删除大小创建的图像以及这些大小的图像附件元数据仍然存在于服务器上。此功能将从服务器中物理删除这些图像以及这些大小的图像附件元数据。使用此功能的风险自负。没有撤消。
Update
虽然插件发挥了神奇的作用,并进行了大量清理,但它无法清理过去从WordPress中删除的图像留下的文件。我使用此自制脚本清理了一些遗留图像:
<?php
$files = find_all_files("/home/****/public_html/wp-content/uploads");
$files2 = array();
foreach($files as $key => $file) {
if(1 == preg_match("#150x\\d+\\.jpg$#", $file)) {
$files2[] = $file;
unlink($file);
}elseif(1 == preg_match("#300x\\d+\\.jpg$#", $file)) {
$files2[] = $file;
unlink($file);
}elseif(1 == preg_match("#\\d+\\x300.jpg$#", $file)) {
$files2[] = $file;
unlink($file);
}elseif(1 == preg_match("#\\d+\\x150.jpg$#", $file)) {
$files2[] = $file;
unlink($file);
}elseif(1 == preg_match("#\\d+\\x1024.jpg$#", $file)) {
$files2[] = $file;
unlink($file);
}
}
print_r($files2);
function find_all_files($dir)
{
$root = scandir($dir);
foreach($root as $value)
{
if($value === \'.\' || $value === \'..\') {continue;}
if(is_file("$dir/$value")) {$result[]="$dir/$value";continue;}
foreach(find_all_files("$dir/$value") as $value)
{
$result[]=$value;
}
}
return $result;
}
?>