¿Por qué wp_get_attachment_image_src está devolviendo dimensiones incorrectas? [duplicar]

2

Estoy usando wp_get_attachment_image_src para construir el atributo srcset de una etiqueta img . En ese atributo, quiero mostrar una lista de direcciones URL de imágenes separadas por comas junto con los anchos de imagen.

Utilizando la página Configuración de medios , he configurado los tamaños de imagen para que sean los siguientes:

  • Tamaño de la miniatura: 150x150
  • Tamaño mediano: 640x480
  • Tamaño grande: 1024x768
  • Tamaño pequeño: 278x320

La función wp_get_attachment_image_src devuelve las urls correctas y los anchos correctos para los tamaños de imagen full , medium y small . small es un tamaño personalizado que agregué usando add_image_size .

Si llamo a wp_get_attachment_image_src( $image_id, 'large' ) , la matriz devuelta tiene este aspecto:

array (
    0 => 'http://localhost/wp-content/uploads/2014/10/image-1024x768.jpg',
    1 => 640,
    2 => 480,
    3 => true,
)

Al verificar la imagen que se puede encontrar en esa url, la imagen tiene las dimensiones correctas.

Actualmente estoy usando la función incorporada de php getimagesize para evitar este problema, pero esta llamada de función requiere significativamente más largo que simplemente acceder al índice devuelto por wp_get_attachment_image_src :

Sin getimagesize (mtime antes y después de la ejecución):

  • '0.83761000 1415195440'
  • '0.83831600 1415195440'

Con getimagesize:

  • '0.34808000 1415195635'
  • '0.35323900 1415195635'

¿Qué puedo hacer para que wp_get_attachment_image_src devuelva las dimensiones correctas?

    
pregunta BdN3504 05.11.2014 - 15:29

1 respuesta

4

Encontré el mismo problema aquí  y la solución desde allí funciona.

La solución es tan simple como pegar esto:

$content_width = 2000;// Value higher than your new 'large' width

en functions.php

Explicación copiada desde allí (usuario Chip Bennett):

  

Creo que su problema es que el valor establecido para la variable global $ content_width (que es 640px en Boilerplate y 584px en Twenty Eleven) es menor que el ancho que está especificando a través de Configuración - > Medios de comunicación.

     

WordPress está anulando la configuración de usuario con el valor específico del tema. Esto realmente tiene sentido, ya que un tema conoce su ancho máximo de contenido, y usar un ancho de imagen mayor que el que está diseñado para adaptarse al tema probablemente rompa el diseño del tema.

Consulte el enlace de arriba para referirse a su respuesta completa.

Este es un enlace al proyecto del tema de los guiones bajos, donde se establece este valor.

    
respondido por el Alvaro 06.11.2014 - 01:34

Lea otras preguntas en las etiquetas