J'utilise wp_get_attachment_image_src
pour construire l'attribut srcset
d'une balise img
. Dans cet attribut, je souhaite générer une liste d'URL d'images séparées par des virgules, ainsi que leurs largeurs.
À l’aide de la page Paramètres du support , j’ai configuré les tailles d’image comme suit:
La fonction wp_get_attachment_image_src
renvoie les URL correctes et les largeurs correctes pour les tailles d'image full
, medium
et small
. small
est une taille personnalisée que j'ai ajoutée à l'aide de add_image_size
.
Si j'appelle wp_get_attachment_image_src( $image_id, 'large' )
, le tableau retourné ressemble à ceci:
array (
0 => 'http://localhost/wp-content/uploads/2014/10/image-1024x768.jpg',
1 => 640,
2 => 480,
3 => true,
)
En vérifiant l'image qui se trouve à cette adresse, l'image est correctement dimensionnée.
Actuellement, j'utilise la fonction intégrée php getimagesize pour contourner ce problème, mais cet appel de fonction prend beaucoup plus de temps que d'accéder simplement à l'index renvoyé par wp_get_attachment_image_src
:
Sans getimagesize (mtime avant et après exécution):
Avec getimagesize:
Que puis-je faire pour que wp_get_attachment_image_src renvoie les dimensions correctes?
J'ai trouvé le même problème ici et la solution à partir de là fonctionne.
La solution est aussi simple que de coller ceci:
$content_width = 2000;// Value higher than your new 'large' width
dans functions.php
Explication copiée à partir de là (utilisateur Chip Bennett):
Je pense que votre problème est que la valeur définie pour la variable globale $ content_width (qui est 640px dans Boilerplate et 584px dans Twenty Eleven) est inférieure à la largeur que vous spécifiez via Paramètres -> Médias.
WordPress redéfinit vos paramètres utilisateur avec la valeur spécifique au thème. Cela a du sens, puisqu'un thème connaît sa largeur de contenu maximale, et utiliser une largeur d'image plus grande que celle à laquelle le thème est conçu aurait très probablement pour effet de casser la présentation du thème.
Vérifiez le lien ci-dessus pour vous référer à sa réponse complète.
Ceci est un lien vers le projet de thème de soulignement, où ils définissent cette valeur.