Wie lösche ich alle NICHT VERWENDETEN Bilder aus meinem Upload-Verzeichnis?

20

Ich versuche, meine Upload-Ordner zu bereinigen, da sie jetzt zu viel Platz auf meinem Server beanspruchen.

Ich habe versucht, Plugins zu verwenden, um dieses Ziel zu erreichen, z. B. DNUI und Cleanup Images, aber diese Plugins sind entweder nicht funktionsfähig oder in DNUIs Fall (der kürzlich aktualisiert wurde und funktioniert) werden nicht die genauen Ergebnisse erzielt, die ich anstrebe. Dies liegt daran, dass meine Website Woocommerce und ein Thema verwendet, bei dem Bilder an anderen Orten verwendet werden und nicht nur Posts oder Seiten wie Kopf- und Fußzeilen oder Galerien. Es scheint, als ob WC ein eigenes, in Lightbox integriertes Plugin namens Pretty Photo verwendet, von dem aus die Bilder aufgerufen werden, die von DNUI als "unbenutzt" bezeichnet werden.

Ich weiß, dass es ein bisschen eine Frage ist, aber ich frage mich, ob mich jemand in die richtige Richtung weisen könnte? Ich bin kein Entwickler, sollte also wahrscheinlich nicht einmal hier posten, aber ich kann Dinge mit Zeit und Entschlossenheit ausarbeiten. Ich habe auf dieser Site Skripte gesehen, die die gleichen Ergebnisse wie das DNUI-Plugin erzielen, aber nichts, was andere Bildverwendungen berücksichtigt (wenn es überhaupt möglich ist?). Jede Hilfe wäre sehr dankbar.

G-Olly
quelle
2
Ich wollte das Gleiche tun, aber was mich beunruhigt, ist, wie man unbenutzt definiert . Beispielsweise hat ein Autor möglicherweise Bilder in einen Entwurfsbeitrag hochgeladen und anschließend einen weiteren Entwurfsbeitrag erstellt, den Inhalt eingefügt und dieser Beitrag veröffentlicht. Dies bedeutet, dass die Bilder dem Entwurf und nicht dem veröffentlichten Beitrag zugewiesen werden. Möglicherweise ein Skript, das alle Beiträge durchsucht und die Bild-URLs überprüft, um festzustellen, welche Bilder verwendet wurden und nicht. Hoffentlich haben wir eine gute Antwort.
Christine Cooper
Leider ist es weniger wahrscheinlich, dass Sie eine passende Lösung dafür finden, je ausgefeilter Ihre Definition von "nicht verwendet" ist. Von wie vielen Bildern (in Anzahl und Größe) sprechen Sie?
Rarst
Hallo Rarst, danke für die Antwort, die Seite ist seit ungefähr 5 Jahren aktiv und sehr bildabhängig, mit einigen Änderungen des Themas und der Plugins. Ich glaube, es gibt buchstäblich 1000 unbenutzte Bilder. Und wegen der Menge der Änderungen variieren die Größen enorm. Ich habe bereits die Force Regenerate Thumbnails verwendet, um diese Anzahl zu reduzieren, und dies hat in gewissem Umfang funktioniert, aber dieses Plugin läuft aufgrund der Anzahl oft ab. Es erhöht auch die CPU auf meinem Server auf ein nicht funktionierendes Niveau, wenn ich es aktiviert lasse.
G-Olly,
Ich erkenne die Komplexität des Problems und nutze die Medienbibliothek, um diese Bilder zu lokalisieren und zu löschen. Leider habe ich festgestellt, dass es auch oft als unbenutzt verwendet wird und umgekehrt, als solches ist es ein akribisch langsamer Prozess, aber ich habe jetzt meine Nase an den Schleifstein.
G-Olly
1
Wenn ich meine zwei Cent reinlegen darf, denke ich, dass das Problem für einige Arten von Websites empirisch gelöst werden kann. Für diese Websites besuchen Webcrawler jede Seite der Website. Holen Sie sich aus Ihrem Server-Log die Liste der URLs aller besuchten Seiten. Analysieren Sie diese Seiten mit DOMDocument und rufen Sie alle <img> -Elemente und ihre srcs ab. Das Problem bei diesem Ansatz ist, dass Javascript dynamisch hrefs und srcs generiert.

Antworten:

4

Bilder mit dem Plugin löschen:

Sie können dieses Plugin verwenden, es durchsucht Ihre Datenbank und prüft, ob ein Bild in einen Beitrag (im Inhalt, als ausgewähltes Bild, in einem benutzerdefinierten Feld, irgendwo ...) oder als Hintergrund eingefügt wurde ...

Wenn das Bild nirgendwo verwendet wird, können Sie es löschen. Sie erhalten eine Liste aller Bilder auf Ihrer Website, die nicht mehr verwendet werden, sodass Sie sie sicher löschen können.

https://wordpress.org/plugins/dnui-delete-not-used-image-wordpress/

und das funktioniert immer noch, auch wenn es veraltet ist

https://wordpress.org/plugins/wordpress-uploaded-files-cleaner/


Bilder manuell löschen:

Sie können Ihre Medienbibliothek auch nach Bildern durchsuchen, die nicht an Beiträge und Seiten gebunden sind.

Gehen Sie zur Medienbibliothek und klicken Sie auf "Nicht verbunden". Es werden alle Bilder angezeigt, die möglicherweise auf anderen Teilen Ihrer Website angezeigt werden oder nicht verwendet werden.

Fortgeschrittenes SEO
quelle
1
Das Problem mit Bildern, die keinem Beitrag angehängt sind, besteht darin, dass sie an einem anderen Ort verwendet werden können - zum Beispiel, wenn Sie ein benutzerdefiniertes Feld haben, das einen Bild-Uploader verwendet, der auf dem nativen Medien-Uploader von Wordpress basiert, je nachdem, wie das Thema lautete codiert, das dort hochgeladene Bild ist keinem Beitrag zugeordnet (in Ihrer Datenbank). Immer noch eine gute Idee.
Bruno Monteiro
Ich werde @BrunoMonteiro hier zweiter. Es ist durchaus möglich, Bilder zu haben, die nicht an einen Beitrag angehängt sind.
BODA82
3

Cron / Geplante Aufgaben und ein DB-Crawl ist dein Freund

Es müsste ein Plugin sein, Sie könnten ihm sogar ein wp_cron-Intervall zuweisen, nicht viel anders als das oben vorgeschlagene, aber mit der Hinzufügung, jedes Feld zu markieren, das 'post_content' ähnelt (Sie müssen diese identifizieren, abhängig von Ihrer WP-Umgebung). für die URI / URL des Bildes. Dies kann die Prozesse des Systems extrem zeitaufwändig / anstrengend machen - realistischerweise müsste dieser Prozess nur einmal am Tag oder in der Woche ausgeführt werden - vorausgesetzt, es gibt keine anderen rechtlichen / geschäftlichen Gründe für eine häufigere Ausführung.

Eine Master-Slave-DB-Konfiguration der Quelle ermöglicht, dass dieser Prozess erheblich weniger Leistungseinbußen mit sich bringt, aber ich glaube, das geht über den Rahmen dieser Frage hinaus.

Brandt Solovij
quelle
2

Ich habe das Image Cleanup- Plugin ausprobiert und es ist das Beste, aber es ist immer noch gut, zuerst ein Backup zu erstellen.

cowboy14
quelle
1

Sie müssten Ihren wp-content/uploadsOrdner nach hochgeladenen Dateien durchsuchen und dann Ihre Datenbank nach Verweisen auf diese Dateien durchsuchen und sie schließlich miteinander abgleichen. Was nicht zu vergleichen ist, sollte sicher zu entfernen sein.

Das Datenbank-Scannen ist der schwierige Teil. Die meisten Dateiverweise werden in der Medienbibliothek gespeichert, auf die Sie mit den Standardfunktionen von WordPress / API zugreifen können. Aber was passiert mit Dateien, die aus der Medienbibliothek entfernt wurden, auf die jedoch immer noch durch Posts verwiesen wird? Oder Dateien, auf die andere Plugins auf unterschiedliche Weise verweisen?

Ich habe eine beträchtliche Anzahl von Tests durchgeführt und nach dem, was ich gesammelt habe, werden alle Dateireferenzen entweder im Nur-Text-Format (dh nur eine Tabellenzelle, die dem Dateipfad oder der URL entspricht), im HTML-Format (dh dem Inhalt eines Posts) gespeichert. als serialisierte Daten oder schließlich als JSON-Objekte. Sie müssten die gesamte Datenbank scannen und versuchen zu erraten, welches Format in jeder Zelle verwendet wird. Natürlich kann es auch andere exotische Methoden geben, mit denen einige Plugins Verweise auf ihre Dateien speichern. Diese können jedoch nur von Fall zu Fall behandelt werden.

Aus diesem Grund habe ich ein Plugin geschrieben, das all das automatisch erledigt, da ich es für einige Websites unserer Kunden benötigte, und es Theia Upload Cleaner genannt habe . Es hat bei mir gut funktioniert, aber natürlich sollten Sie immer ein Backup erstellen, bevor Sie so etwas ausprobieren.

Leben
quelle
Netter Ansatz ... Ich frage mich, ob Sie ein Problem damit haben, dass im Laufe der Zeit immer mehr Inhalte / Plugins / Posts hinzugefügt wurden ...
jj_
Es gibt hier und da Probleme, ja. Beispielsweise müssen Sie für einige Plug-ins bestimmte Tabellen ausschließen, die andernfalls zu einer erheblichen Verlangsamung führen können. Wir versuchen zwar, bestimmte Schlüsselwörter wie "Log" -Tabellen automatisch auszuschließen, aber es werden natürlich nicht alle Fälle erfasst.
Liviucmg