web-dev-qa-db-fra.com

Supprimer les images (fichiers) générées lors de l'utilisation de add_image_size ()

J'ai ajouté une taille d'image en utilisant ceci:

add_image_size('property-featured', 484, 393, true);

Cela a très bien fonctionné au cours de la dernière année et a généré environ 1 Go d'images de cette taille, mais cette taille n'est plus nécessaire. Je souhaite clarifier les images créées au cours de l'année dans cette taille.

Jusqu'à présent, j'ai supprimé cette ligne de code mais cela ne nettoie pas les images créées.

Quelle est la bonne façon de supprimer ces images?

7
Brady

J'ai trouvé un plugin qui le fait pour moi: Autres tailles d'images (zui)

Lorsque vous supprimez une taille d'image, cette taille ne sera pas créée pour toutes les nouvelles images téléchargées. Toutefois, les images créées pour les tailles supprimées existent toujours sur le serveur, ainsi que les métadonnées de la pièce jointe pour ces tailles. Cette fonctionnalité supprimera physiquement ces images du serveur ainsi que les métadonnées de pièce jointe pour ces tailles. Utilisez cette fonctionnalité à vos risques et périls. Il n'y a pas d'annuler.

Mise à jour

Alors que le plugin fonctionnait à merveille et effectuait beaucoup de nettoyage, il ne pouvait pas nettoyer les fichiers laissés par les images qui avaient été supprimées de WordPress dans le passé. J'ai utilisé ce script de brassage maison pour nettoyer certaines des images restantes:

<?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; 
} 
?>
9
Brady

J'utilise http://wordpress.org/extend/plugins/regenerate-thumbnails/ pour recréer mes vignettes. Autant que je sache, toutes les tailles d'image sont supprimées puis régénérées. Cela peut être lent en fonction du nombre d'images + tailles d'image qui sont réenregistrées.

Une autre manière serait de faire cela via SSH et de les trouver avec une commande comme:

find ./uploads/*  -iname '*-484x393.*' -ls

Puis lancez une commande comme:

find ./uploads/*  -iname '*-484x393.*' -exec rm {} \;

Assurez-vous de tout sauvegarder avant d'exécuter une telle commande.

2
Cristian