Frisch notiert!

Die neusten Artikel aus unserem Blog.

WordPress Funktion: prüfen, ob Bild in gewünschter Größe existiert

Zuletzt aktualisiert am 18/08/2016 von Adrian Lambertz
Wordpress
/ Wordpress / 0

WordPress bietet mit add_image_size() eine tolle Funktion, um einzelne Bildergrößen hinzuzufügen. Auf diese Funktion setzen wir sehr stark bei unseren Kundenwebsites. Jedoch haben wir immer ein und das selbe Problem. Fallbacks. Was passiert, wenn der Kunde zu kleine Fotos hochlädt, die das WordPress nicht verkleinert/bearbeitet? Standardmässig geben die gängigen WordPress-Funktionen wie wp_get_attachment_image(), get_the_post_thumbnail() dann die Original-URL des Bildes aus. Was aber, wenn man das nicht möchte?

Genau das passiert uns ständig. Gut, eine andere Ausgaben bei fehlendem Bild über eine if-Abfrage zu generieren ist kein Problem, aber wenn ich wissen will ob das Bild in der von mir gewünschten Größe existiert muss ich mir was einfallen lassen. Man könnte über die PHP Funktion getimagesize() die genaue Größe des Bildes auslesen und dann ebenfalls konditionieren. Das ist allerdings viel zu umständlich und zeitraubend.

Aus diesem Grund haben wir uns folgende kleine Funktion geschrieben:

function image_has_size($img,$size){
$image = wp_get_attachment_image_src($img, $size);
return $image[3];
}

Was macht diese Funktion genau?

Sie ruft die WordPress Funktion wp_get_attachment_image_src() auf. Diese hat nämlich eine sehr wichtige, jedoch oft nicht beachtete Ausgabe. Und zwar gibt sie ein Array mit der URL des Bildes in der gewünschten Größe (falls vorhanden!), die Breite, die Höhe UND (bool) true oder false aus, ob das Bild in dieser Größe existiert oder nicht.

Aus diesem Array hole ich mir genau die boolsche Ausgabe und gebe sie aus.
So gibt mir die Funktion richtig oder falsch aus – schön lesbar und kompakt.

Ich weiss, im Grunde brauche ich dafür keine einzelne neue Funktion, aber jedes mal in meinen Templates if(wp_get_attachment_image_src(‚ID‘,’IMAGE_SIZE‘)[3]): stehen zu haben finde ich nicht sonderlich les- und nachvollziehbar. Vor allem wenn man bedenkt, dass man seine Templates erst nach Monaten oder Jahren wieder nochmal anpackt… Ich möchte mir dann nicht die Frage stellen was die Funktion nun da genau macht. Daher schön klar if(image_has_size(‚ID‘,’IMAGE_SIZE‘)): und ich weiss „OK, hat das Bild AB Größe XY? Wenn ja, tue dies. Wenn nein, jenes.“

Benutzung

Füge das Snippet einfach in deine functions.php ein. Schon kannst du sie überall in deinen Templates nutzen.

Die Funktion benötigt IMMER die ID (int) des gewünschten Bildes plus die über add_image_size() angelegte Bildgröße (string).

Beispiel

Das folgende Beispiel prüft, ob das Artikelbild (featured image) in ausreichender (large) Größe vorliegt. Falls nicht, wird das Pixelbar Logo angezeigt :-)

if(image_has_size(get_post_thumbnail_id(),'large')):
the_post_thumbnail('large');
else:
echo '<img src="https://www.pixelbar.be/wp-content/themes/pavpix/img/logo_pixelbar.png" alt="Pixelbar" />';
endif;

Adrian Lambertz

Seit 2010 bin ich nun schon bei Pixelbar mit dabei. Zuerst als Auszubildender und nach erfolgreichem Abschluss meiner Ausbildung als Frontend-Entwickler. Ohne Musik und Kaffee kann ich nicht leben, daher konsumiere ich beides während der Arbeit praktisch durchgehend :). Daneben liebe ich WordPress - darauf habe ich mich spezialisiert.

Weitere Beiträge von adrian anzeigen

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert