web-dev-qa-db-fra.com

Pourquoi wp_get_attachment_image_src renvoie-t-il de mauvaises dimensions?

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:

  • Taille de la vignette: 150x150
  • Taille moyenne: 640x480
  • Grande taille: 1024x768
  • Petite taille: 278x320

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):

  • '0.83761000 1415195440'
  • '0.83831600 1415195440'

Avec getimagesize:

  • 0.34808000 1415195635
  • 0.35323900 1415195635

Que puis-je faire pour que wp_get_attachment_image_src renvoie les dimensions correctes?

2
BdN3504

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.

4
Alvaro