Ich verwende wp_get_attachment_image_src
, um das srcset
-Attribut eines img
-Tags zu erstellen. In diesem Attribut möchte ich eine durch Kommas getrennte Liste von Bild-URLs zusammen mit den Bildbreiten ausgeben.
Mit den Medieneinstellungen Seite habe ich die Bildgrößen wie folgt konfiguriert:
Die Funktion wp_get_attachment_image_src
gibt die richtigen URLs und die richtigen Breiten für die Bildgrößen full
, medium
und small
zurück. small
ist eine benutzerdefinierte Größe, die ich mit add_image_size
hinzugefügt habe.
Wenn ich wp_get_attachment_image_src( $image_id, 'large' )
aufrufe, sieht das zurückgegebene Array folgendermaßen aus:
array (
0 => 'http://localhost/wp-content/uploads/2014/10/image-1024x768.jpg',
1 => 640,
2 => 480,
3 => true,
)
Wenn Sie das Bild überprüfen, das sich unter dieser URL befindet, wird das Bild mit den richtigen Abmessungen angezeigt.
Gegenwärtig benutze ich die in PHP eingebaute Funktion getimagesize , um dieses Problem zu umgehen, aber dieser Funktionsaufruf dauert bedeutend länger als der bloße Zugriff auf den von wp_get_attachment_image_src
zurückgegebenen Index:
Ohne getimagesize (mtime vor und nach der Ausführung):
Mit getimagesize:
Was kann ich tun, damit wp_get_attachment_image_src die richtigen Dimensionen zurückgibt?
Ich habe das gleiche Problem gefunden hier und die Lösung von dort funktioniert.
Die Lösung ist so einfach wie das Einfügen:
$content_width = 2000;// Value higher than your new 'large' width
in functions.php
Erklärung von dort kopiert (User Chip Bennett):
Ich glaube, Ihr Problem ist, dass der Wert für die globale Variable $ content_width (640px in Boilerplate und 584px in Twenty Eleven) geringer ist als die Breite, die Sie über Einstellungen -> Medien angeben.
WordPress überschreibt Ihre Benutzereinstellung mit dem themenspezifischen Wert. Dies ist tatsächlich sinnvoll, da ein Thema seine maximale Inhaltsbreite kennt und die Verwendung einer größeren Bildbreite als die, für die das Thema entworfen wurde, sehr wahrscheinlich das Layout des Themas stören würde.
Überprüfen Sie den Link oben, um auf seine vollständige Antwort zu verweisen.
Dies ist ein Link zum Underscores-Theme-Projekt, wo sie diesen Wert setzen.