Entfernen Sie Bilder (Dateien), die mit add_image_size () generiert wurden.

7

Ich habe eine Bildgröße hinzugefügt, indem ich Folgendes verwendet habe:

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

Es hat im letzten Jahr sehr gut funktioniert und ungefähr 1 GB Bilder in dieser Größe erzeugt, aber diese Bildgröße wird nicht mehr benötigt. Ich möchte die Bilder löschen, die im Laufe des Jahres in dieser Größe erstellt wurden.

Bisher habe ich diese Codezeile entfernt, aber die erstellten Bilder werden nicht bereinigt.

Was ist der richtige Weg, um diese Bilder zu entfernen?

Scott
quelle

Antworten:

9

Ich habe ein Plugin gefunden, das dies für mich erledigt: Zusätzliche Bildgrößen (zui)

Wenn Sie eine Bildgröße löschen, wird diese Größe nicht für alle NEUEN Bilder erstellt, die Sie hochladen. Auf dem Server sind jedoch weiterhin Bilder vorhanden, die für gelöschte Größen erstellt wurden, sowie die Metadaten für Bildanhänge für diese Größen. Diese Funktion löscht diese Bilder physisch vom Server sowie die Metadaten der Bildanhänge für diese Größen. Verwenden Sie diese Funktion auf eigenes Risiko. Es gibt kein Rückgängigmachen.

Aktualisieren

Während das Plugin Wunder wirkte und viel bereinigte, konnte es die Dateien, die von Bildern zurückgelassen wurden, die in der Vergangenheit aus WordPress entfernt worden waren, nicht bereinigen. Ich habe dieses Home Brew-Skript verwendet, um einige der verbleibenden Bilder zu bereinigen:

<?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; 
} 
?>
Scott
quelle
2

Ich verwende http://wordpress.org/extend/plugins/regenerate-thumbnails/ , um meine Miniaturansichten neu zu erstellen. Soweit mir bekannt ist, werden alle Bildgrößen entfernt und anschließend neu generiert. Es kann langsam sein, abhängig davon, wie viele Bilder + Bildgrößen neu gepolstert werden.

Eine andere Möglichkeit wäre, dies über SSH zu tun und sie mit einem Befehl wie dem folgenden zu finden:

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

Führen Sie dann einen Befehl wie folgt aus:

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

Bitte stellen Sie sicher, dass Sie alles sichern, bevor Sie einen solchen Befehl ausführen.

Cristian
quelle
2
Zuerst hielt ich das für eine gute Idee, aber als ich mir ansah, welche Daten gespeichert sind, stellte sich heraus, dass für jedes Bild mit geänderter Größe ein ganzer Haufen Metadaten in der Datenbank gespeichert ist. Wenn Sie die Bilder auf diese Weise löschen, bleiben die Daten zurück, nach denen ich auf einer Produktionsstätte nicht gesucht habe.
Scott
Ich habe einen kurzen Blick in die WordPress-Metatabellen usw. und die Codebasis geworfen und konnte nicht sehen, über welche Metadaten Sie gesprochen haben. Könnten Sie mich auf das hinweisen, was Sie gesehen haben? Ich könnte über das Wochenende ein Plugin dafür schreiben, da es eine nette kleine Idee ist. :)
Cristian
1
Sie müssen kein Plugin erstellen, da es bereits einige gibt. Eine habe ich schon erwähnt. Aber um die Metadaten zu finden, über die ich spreche: Suchen Sie eine Bildanhang-ID. Schauen Sie sich dann die Postmeta-Tabelle an und sehen Sie sich alle Zeilen an, die an diesen Anhang angehängt sind. Eine der Zeilen (kann sich nicht an den Namen erinnern) enthält eine Tonne serialisierter Daten. Diese Daten enthalten Pfade zu allen Bildern mit geänderter Größe und deren resultierende Größe.
Scott