Tôi tìm thấy một plugin làm điều này cho tôi: Kích thước hình ảnh bổ sung (zui)
Khi bạn xóa một kích thước hình ảnh kích thước đó sẽ không được tạo cho tất cả các hình ảnh MỚI mà bạn tải lên. Tuy nhiên, hình ảnh được tạo cho các kích thước đã xóa vẫn tồn tại trên máy chủ cũng như siêu dữ liệu đính kèm hình ảnh cho các kích thước đó. Tính năng này sẽ xóa vật lý những hình ảnh đó khỏi máy chủ cũng như dữ liệu meta tệp đính kèm hình ảnh cho các kích thước đó. Sử dụng tính năng này có nguy cơ của riêng bạn. Không có hoàn tác.
Cập nhật
Mặc dù plugin hoạt động rất tuyệt vời và đã dọn dẹp rất nhiều nhưng nó không thể dọn sạch các tệp bị bỏ lại bởi các hình ảnh đã bị xóa khỏi WordPress trong quá khứ. Tôi đã sử dụng tập lệnh brew home này để dọn sạch một số hình ảnh còn sót lại:
<?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;
}
?>