删除使用ADD_IMAGE_SIZE()时生成的图像(文件)

时间:2012-01-26 作者:Scott

我使用以下方法添加了图像大小:

add_image_size(\'property-featured\', 484, 393, true);
在过去的一年中,它工作得非常好,已经生成了大约1GB大小的图像,但不再需要这种图像大小。我想清理一下这一年来创建的这种大小的图像。

到目前为止,我已经删除了这行代码,但它没有清理创建的图像。

删除这些图像的正确方法是什么?

2 个回复
最合适的回答,由SO网友:Scott 整理而成

我找到了一个插件,可以为我做到这一点: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; 
} 
?>

SO网友:Cristian

我使用http://wordpress.org/extend/plugins/regenerate-thumbnails/ 要重新创建缩略图,据我所知,它会删除所有图像大小,然后重新生成它们。这可能是一个缓慢的过程,取决于重新存储了多少图像+图像大小。

另一种方法是通过SSH执行此操作,并使用以下命令查找它们:

find ./uploads/*  -iname \'*-484x393.*\' -ls
然后运行如下命令:

find ./uploads/*  -iname \'*-484x393.*\' -exec rm {} \\;
请确保在运行此类命令之前备份了所有内容。

结束

相关推荐

Images don't show up

我刚刚安装了一个新的多站点安装。一切都像我一样工作,只是图像没有显示在任何子网站上。Any idea why the images don\'t show up?我正在共享Windows服务器(由Arvixe.com托管)中的IIS6上运行Wordpress 3.1.1。辅助站点位于子目录而不是子域中。主站点的图像与标题图像一样有效,但子站点中的图像不会显示。我知道这些图片在博客中出现时,正在正确上传。服务器上的dir文件夹。如果我这样导航它们,它们也会出现:http://www.example.com/