Ich möchte alle verkleinerten Bilder löschen, ohne das Originalbild zu verändern. Ich habe mehr als 20 GB unbenutzte Daten, die Platz auf dem Server beanspruchen. Zum Beispiel:
Gibt es eine Möglichkeit, alle Bilder mit geänderter Größe zu löschen und das Erstellen solcher Bilder in Zukunft zu deaktivieren?
Ein Großteil der Antworten befasste sich mit der Frage, wie Sie künftige Standardbildgrößen nicht mehr erstellen können. Dabei werden jedoch keine benutzerdefinierten Größen in Ihrem Design berücksichtigt. Hier ist eine andere Lösung, die Sie zu functions.php
hinzufügen können:
function wpse_240765_unset_images( $sizes ){
unset( $sizes[ 'thumbnail' ]);
unset( $sizes[ 'medium' ]);
unset( $sizes[ 'medium_large' ] );
unset( $sizes[ 'large' ]);
unset( $sizes[ 'full' ] );
return $sizes;
}
add_filter( 'intermediate_image_sizes_advanced', 'wpse_240765_unset_images' );
sie können auch die zukünftige Standardbildgenerierung deaktivieren, indem Sie die Bilder auf Null setzen:
aber um die Bilder zu entfernen, die nicht die Originale sind, bin ich auf dasselbe Problem gestoßen, als ich vergessen habe, es so einzustellen, dass es nicht gemacht wird, und was ich getan habe, war:
Laden Sie alle Fotos lokal über einen SFTP-Dienst herunter, ich liebe Senden (bezahlt), aber Sie können so etwas wie Filezilla (kostenlos) verwenden.
Laden Sie alle Dateien in ein Verzeichnis herunter.
Ich habe einen Mac, aber jedes Terminal, das Bash erlaubt, funktioniert. Ich habe ein einfaches Bash-Skript geschrieben:
# !/bin/bash
USERNAME=vader
DIRECTORY="/Users/$USERNAME/desktop/question240765"
for imageWithSize in $(find "$DIRECTORY" -type f -regex '.*/[a-z-]*-[0-9].*.txt$'); do
cd $DIRECTORY
echo rm $imageWithSize
done
Der Ordner befindet sich auf meinem Desktop und für die Frage habe ich ihn question240765
genannt. Ich habe .txt
-Dateien verwendet, um dies zu testen, aber Sie können es in .jpg
ändern. Ich habe es als Bash-Datei image_dust.sh
gespeichert, damit ich es später ändern oder verbessern kann. Führen Sie das Skript zuerst mit der echo
aus und Sie können es sogar in eine Datei speichern, indem Sie die Zeile ändern:
echo rm $imageWithSize
zu:
echo rm $imageWithSize >> result.txt
dadurch wird alles in der Datei result.txt protokolliert und Sie können sie durchsuchen, bevor Sie sie wirklich entfernen. Wenn alles in Ordnung ist, ändern Sie diese Zeile in:
rm $imageWithSize
Wenn Sie neugierig sind, was der Regex macht:
[a-z-]*
sucht nach Dateinamen wie foo-bar
oder fo-fo-bar
. Wenn Sie Großbuchstaben in Ihrem Namen haben, verwenden Sie [A-Za-z-]*
-[0-9]
sucht nach dem Dateinamen nach dem verbleibenden -
(Bindestrich) mit einer Nummer [0-9]
.*.txt
sucht nach der ersten Ziffer bis zum Ende des Namens mit der Erweiterung.Nachdem Sie das Skript fertiggestellt und ausgeführt haben. Sie könnten alles auf Ihrer Website wegblasen und die Bilder erneut hochladen. Wenn Sie sich Sorgen über die Dateigröße machen, würde ich sogar imagemagick
verwenden, aber ich bevorzuge sips
, um die Komprimierungsgröße der Bilder zu reduzieren.
Wenn Codierung nicht Ihre größte Stärke ist möchten Sie möglicherweise eine Plug-in-Lösung suchen.
Was ich vorhabe, ist ein Vorschlag für ein paar kostenlose Plugins, die sich im WordPress-Repository befinden:
Ich muss zugeben, dass ich den ersten - Media Cleaner - noch nicht verwendet habe, daher kann ich Ihnen keine fundierte Meinung geben.
Ich habe zwar die zweite verwendet - Bildgröße optimieren - und hatte die erwarteten Ergebnisse.
Bevor Sie etwas versuchen,
Ich kann die Wichtigkeit der Erstellung eines vollständigen Backups Ihrer WordPress-Installation nicht genug strecken (sowohl Ihr Upload-Ordner als auch Ihr dB) .
Ich verstehe, dass es sich um 20 GB handelt, aber ein Backup ist besonders in dieser einzigartigen Situation unerlässlich.
Dieser Vorgang ist zeitaufwendig und belastet den Server.
Es ist ratsam, Ihre Site in den Wartungsmodus zu versetzen.
Löschen Sie verwaiste Anhänge
Wenn alles erledigt ist Verwende deine Lieblings-Thumbnails Erstelle Thumbnails Plugins, um die Bildgrößen von WordPress/Themes wiederherzustellen und EWWW Image Optimizer und Imsanity zu installieren. Diese Kombination garantiert optimierte Bilder in der Größe, die nur benötigt werden.
Optimieren Sie die Größe der Bilder
Bitte teilen Sie uns mit, wie Sie die besten Ergebnisse erzielt haben.
Um alle überflüssigen Bilddateien zu entfernen, müssen wir alle Posts durchlaufen, die Anhänge zu diesen Posts suchen, feststellen, welche angehängten Bildgrößen nicht mehr benötigt werden, und diese Dateien entfernen. Auf geht's.
Zuerst alle (benutzerdefinierten) Posts und Seiten abrufen und durchlaufen:
$the_query = new WP_Query (array ('posts_per_page' => -1, 'post_type' => 'any'));
foreach ($all_posts as $post) { ... }
Als nächstes für $post
alle angehängten Bilder abrufen und eine Liste aller Mediengrößen abrufen . Dann durchlaufen Sie sie:
$images = get_attached_media ('image',$post); // returns array of post objects
$sizes = get_intermediate_image_sizes(); // returns array of identifying strings
foreach ($images as $image) {
foreach ($sizes as $size) {
...
}
}
Nun für dieses Bild und Größe, finden Sie die URL und löschen Sie die Datei
$att = wp_get_attachment_image_src ($image->ID,$size); returns array of file properties
wp_delete_file ($att['url']);
Ich würde diesen Code vor dem Anwenden gründlich testen ... Bei 20 GB in Bildern kann es auch eine Weile dauern, bis er ausgeführt wird.
Keine Ahnung, wie man vorhandene Bilder entfernt. Sie können jedoch die Generierung von Bildgrößen für neue Bilder einstellen, die Sie hochladen möchten.
Wenn Sie Codes schreiben möchten: Fügen Sie diesen Codeausschnitt in die functions.php
-Datei Ihres Themas ein.
add_filter( 'intermediate_image_sizes_advanced', 'wpse_240765_image_sizes' );
function wpse_240765_image_sizes( $sizes ){
$sizes = array();
return $sizes;
}
Oder mit einem Plugin: Benutze dieses Plugin https://wordpress.org/plugins/image-sizes/
Es gibt Ihnen die gleiche Ausgabe. Sie können sogar auswählen, welche der Bildgrößen nicht erstellt werden sollen.
Wenn Sie über SSH-Zugriff verfügen, können Sie die folgenden Befehle ausführen, um die verkleinerten Bilder aufzulisten und zu entfernen. Später können Sie sie wieder aufbauen.
Listet alle Bilder auf, deren Größe geändert wurde.
# List all resized images.
# Usage: lrimg site.ext
function lrimg() {
clear
THE_PWD=$PWD
cd ~
cd /var/www/"$1"/htdocs/wp-content/uploads/
find . -regextype posix-extended -regex ".*-[[:digit:]]{1,9}x[[:digit:]]{1,9}(@2x)?.(jpg|jpeg|png|eps|gif)" -type f
cd $THE_PWD
}
Entfernen Sie alle verkleinerten Bilder.
# Remove all resized images.
# Usage: lrimgrm site.ext
function lrimgrm() {
clear
THE_PWD=$PWD
cd ~
cd /var/www/"$1"/htdocs/wp-content/uploads/
find . -regextype posix-extended -regex ".*-[[:digit:]]{1,9}x[[:digit:]]{1,9}(@2x)?.(jpg|jpeg|png|eps|gif)" -type f -exec rm {} \;
cd $THE_PWD
}
Sei hier vorsichtig. Halten Sie Ihre Backups bereit.
P.S. Mein Server hat ein NGINX-Setup. Aus diesem Grund lauten die Site-Pfade /var/www/"$1"/htdocs/
$ 1 als Parameter für den Site-Namen. Sie können es an Ihren Pfad anpassen.
Die fließenden Schritte sollten es tun:
1) Entfernen Sie zunächst nicht benötigte Bildgrößen aus Ihren relevanten Dateien, z. funktionen. PHP in Ihrem Theme und ggf. vorhandene Plugins (z. B. ruderlos).
2) Als nächstes können Sie alle benötigten Bildgrößen per FTP löschen.
3) Anschließend müssen Sie die Miniaturansichten neu generieren (z. B. alle Bildgrößen, die Wordpress erstellen soll). Sie können ein beliebiges Plug-In zum Generieren von Miniaturansichten aus dem Repo WP verwenden.
Versuchen Sie es alternativ folgendermaßen: 1) Entspricht Schritt 1 oben
2) Es gibt einige Plugins im Plugin-Verzeichnis (Repo), die alle WP Thumbs löschen und die Thumbs nur dann generieren, wenn sie zum ersten Mal auf einer bestimmten Seite Ihrer Website aufgerufen werden. Bei einer späteren Anforderung des Bildes ist das Bild bereits vorhanden und wird wie gewohnt geliefert. Dies hat den Vorteil, dass Thumbs nur für Bilder/Größen erstellt werden, die von Ihrer Site tatsächlich benötigt werden. Bilder, die auf nicht standardmäßige Weise aufgerufen werden, werden möglicherweise nicht generiert.
Wenn Sie den zusätzlichen Aufwand für übermäßig große Originalbilder verringern möchten, können Sie das Plug-in "imsanity" verwenden, um die physische Dateigröße dieser Originale auf eine Größe Ihrer Wahl zu reduzieren. Es ist ein großartiges Tool für Websites mit vom Benutzer eingereichten Bildern.
1) Um zu verhindern, dass WordPress beim Hochladen eines Bildes mehrere Bildgrößen erstellt, können Sie dies ohne Verwendung eines Plugins tun.
Navigieren Sie im Admin-Bereich zu Einstellungen > Medien .
Wenn Sie die Größen auf 0 setzen, wird WordPress daran gehindert, Standardbildgrößen zu erstellen, und nur das Originalbild wird gespeichert.
2) Um die 20 GB Bilder, die Sie auf Ihrer Site haben, zu reduzieren, würde ich einfach SFTP auf Ihren Server laden und die unterschiedlich großen Bilder manuell löschen. Navigieren Sie im Stammverzeichnis einer WordPress-Installation zu wp-content/uploads/<yyyy>/<mm>/
und Sie finden alle Ihre Bilder und Medien-Uploads. Sie möchten sichergehen, dass das Originalbild erhalten bleibt, oder Sie löschen einfach das gesamte Bild. Jeder Bilddateiname mit einem zusätzlichen - ###x###.jpg
ist ein automatisch generiertes Bild. Das Originalbild würde dies nicht im Dateinamen haben.
Nebenbei - um Ihnen mit Ihren Bildern zu helfen, würde ich das WP-Smush-Plugin von WPMU DEV ausprobieren.
Es ist wirklich großartig und wenn Sie Bilder hochladen, verwendet es automatisch ihre Server, um Bilder vor dem Speichern zu komprimieren und zu komprimieren. Es kann auch Bilder mit großer Auflösung auf eine vernünftige Maximalgröße verkleinern. Sie sollten wirklich kein Bild anzeigen müssen, das größer als 2048 x 2048 ist.