Fotos in Originalgröße (volle Auflösung) in WordPress-Mediathek nach Upload löschen
Wer kennt sie nicht: Kunden mit Digitalkameras, die gefühlt 80.000 Megapixel zum Besten geben und Fotos von jeweils mehr als 10 Megabyte in WordPress hochladen möchten. Bildbearbeitungsprogramme werden entweder gekonnt oder ganz bewusst ignoriert. Ein kleines Snippet schafft Abhilfe und löscht das Foto in Originalgröße nach dem Upload.
Genauer gesagt: Es ersetzt das Foto in Originalgröße durch ein kleineres Motiv. Die Größe ist natürlich frei einstellbar.
Bei unseren Kunden-Websites werden die sündhaft großen Originalmotive später meist gar nicht mehr gebraucht. In der Regel schlummern die Fotos des Kunden in Originalgröße auf seiner eigenen Festplatte. Grund genug die Festplatte des Servers Punkto Webspace etwas zu entlasten und folgendes Snippet in die Datei „functions.php“ des genutzten Themes einfügen.
add_filter('wp_generate_attachment_metadata','replace_uploaded_image');
function replace_uploaded_image($image_data)
{
// if there is no large image : return
if ( !isset($image_data['sizes']['large']) )
return $image_data;
// paths to the uploaded image and the large image
$upload_dir = wp_upload_dir();
$uploaded_image_location = $upload_dir['basedir'] . '/' . $image_data['file'];
$large_image_location = $upload_dir['path'] . '/' . $image_data['sizes']['large']['file'];
// delete the uploaded image
unlink($uploaded_image_location);
// rename the large image
rename($large_image_location, $uploaded_image_location);
// update image metadata and return them
$image_data['width'] = $image_data['sizes']['large']['width'];
$image_data['height'] = $image_data['sizes']['large']['height'];
unset($image_data['sizes']['large']);
return $image_data;
}
Das Original-Snippet stammt übrigens von dieser Seite.
Maximale Bildgröße einstellen
Ihr möchtet nun bestimmen was konkret unter „large“ verstanden wird? In der WordPress-Administrationsoberfläche findet man unter Einstellungen > Medien die „Maximale Bildgröße“. Einfach den entsprechenden Wert nach eigenem Gusto anpassen. Anpassungen an diesen Werten wirken sich übrigens nur auf Bilder aus, die nach der Anpassung hochgeladen werden. Bilder, die sich bereits in der Mediathek befinden, werden nicht angerührt. Abhilfe schafft an dieser Stelle das Plugin „Regenerate Thumbnails“.
Eigene Werte definieren
Wer den WordPress-eigenen Wert „large“ bereits anderweitig verwendet und lieber ein individuelles Maß nutzen möchte, kann in seiner Datei functions.php eine eigene „Image Size“ definieren.
add_image_size( 'neues-mass', 1600, 1200 );
Anschließend muss das oben notierte Script etwas angepasst und überall $image_data[’sizes‘][‚large‘] durch $image_data[’sizes‘][’neues-mass‘] ersetzt werden.
Genau das was ich gesucht habe ! Vielen Dank !
Gruss Ivo
Muss das „large“ nur in $image_data[’sizes‘][‚large‘] getauscht werden oder überall in dem Code? (z.B. rename($large_image_location, $uploaded_image_location);)
Hallo Moritz, in $image_data[’sizes‘][‚large‘] auf jeden Fall. Bei den anderen hängt es halt von den Bezeichnungen der Variablen ab :-)
Das tönt gut. Danke, werde ich ausprobieren. Das Praxisbuch schätze ich übrigens sehr, damit habe ich „WordPress gelernt“.
Danke für die Blumen :) Freut mich, dass es Ihnen gefällt!
Hallo Gino, ich nutze wie in dem unteren Teil deiner Beschreibung einen eigenen Größen-Wert. Das funktioniert über den Upload in der Mediathek auch sehr gut. Möchte ich die Datei nun direkt im Beitrag über Beitragsbild hochladen, bekomme ich stets den Fehler „Bei dem Upload ist ein Fehler aufgetaucht. Probiere es später noch einmal.“ und es wird kein Bild erzeugt. Was ist hier das Problem?
Hallo Clemens, ich vermute mal, dass irgendwo ein Rechte-Problem (Zugriffsrechte) vorliegt. Dass bereits beim Upload etwas schief läuft, lässt eher darauf schließen, dass der Ordner /uploads nicht beschrieben werden kann. Am besten via FTP auf die Dateien und Ordner zugreifen und die Rechte des Ordners /uploads (da liegen die Mediathek-Elemente drin) anpassen bzw. großzügigere Rechte vergeben.
Hallo Gino, vielen Dank für deine Antwort. Sowohl der Uploads-Ordner als auch die Jahres- und Monats-Ordner haben aber 777 Rechte.
Es funktioniert insoweit, dass die Bilder in meinen Größenformaten hochgeladen werden, aber das große Bild dann nicht umbenannt wird. Ich kann es nicht in 100% der Fälle reproduzieren, doch in den meisten verhält es sich so. Konnte aber keinen Grund herausfinden.
Das Problem ist wohl bisher nicht bekannt? Hast du noch einen Tipp für mich?
Hallo Gino,
ich habe dein Snippet in meine functions.php eingebaut und danach die maximale Breite / Höhe für Groß auf jeweils 1200 gesetzt.
Lade ich nun ein Bild hoch, wird mir zwar ein Bild mit 1200×900 erzeugt, aber das Originalbild nicht gelöscht! Was kann da das Problem sein?
Ich benutze WordPress 4.2.1 und PHP 5.4.40
Danke schon mal im Voraus!
Hallo Rainer, „aus der Ferne“ kann ich das leider nicht sagen. Ich würde vermuten, dass WordPress bzw. das Script es aufgrund der Zugriffsrechte nicht schafft Dateien zu löschen. Das ist allerdings spekulativ. Angenommen du lädst eine Datei in die Mediathek hoch und löschst dnaach diese Datei wieder…werden die Bilder auch tatsächlich aus dem Ordner (per FTP kontrollieren!) entfernt? Wenn ja, ist tatsächlich ales richtig und die Zugriffsrechte müssten stimmen. Falls nein, liegt es nicht am Script, sondern an den allgemeinen Zugriffsrechten (WordPress hat einfach ausgedrückt kein Recht, die Dateien in /uploads zu löschen).
Guten Abend,
Möchten Sie eine schnelle und zuverlässige Lösung für alle Ihre Probleme? ich
empfehlen auf jeden Fall Herr Paul, der einzige Weg,
Derzeit bieten schnelle und zuverlässige Darlehen zwischen Privatpersonen in 72
Stunden bei einer Rate von 3% an.Voici die Bereiche, in denen
* Finanz * Home Loan * Ready to: es wird Ihnen helfen
Investitionen * Auto Loan * Schuldenkonsolidierung * Margin
Kredit * Zweite Hypothek * Erwerb von Kredit * Privatkredit.
Probieren Sie es aus und Sie werden nicht enttäuscht sein. Er ist bereit, Sie
gewähren ein Darlehen von 5000 € bis 900.000 €, er ist bereit zu helfen
jemand in Not, mache ich nur Zeugnis Dankbarkeit zu ihm,
also bitte verzeiht mir, wenn es dich stört. Weitere Informationen
danke die E-Mail für Ihre Anwendung zu kontaktieren.
E-Mail: uniapaulroger@gmail.com