¿Cómo obtener todos los tamaños de imagen destacada y sus URLs?

25 oct 2015, 14:05:41
Vistas: 33.2K
Votos: 14

¿Hay alguna forma estándar de obtener todos los tamaños registrados de las imágenes destacadas? Se pueden registrar diferentes tamaños con add_image_size(). Lo que necesito es obtener todos los tamaños de una imagen destacada de una entrada. Algo como esto:

$sizes = get_post_feature_image_sizes($postid);

...que devolverá un array de objetos como este (aquí en formato JSON):

[
{width: 200, height: 300, url: 'http://.........../wp-content/uploads/2015/10/file-200x300.jpg'},
{width: 300, height: 400, url: 'http://.........../wp-content/uploads/2015/10/file.jpg'},
]

¿Existe algo como esto, o tendré que escanear todos los nombres de archivo de la carpeta de uploads con expresiones regulares?

1
Comentarios

La imagen destacada es solo el ID de un adjunto, todas las API estándar de adjuntos deberían funcionar con ella

Tom J Nowell Tom J Nowell
25 oct 2015 16:23:40
Todas las respuestas a la pregunta 3
3
16

No recuerdo una función que haga precisamente eso, pero se puede lograr fácilmente con la API en general:

  1. Obtener el ID del adjunto con get_post_thumbnail_id()
  2. Obtener los tamaños disponibles con get_intermediate_image_sizes()
  3. Para cada tamaño usar wp_get_attachment_image_src(), que proporciona exactamente los datos que necesitas (URL y dimensiones).
25 oct 2015 19:39:50
Comentarios

¡Gracias, eso ayudó mucho! :) Esta es mi primera vez desarrollando con WP y la API y la terminología da un poco de miedo. :)

NoOne NoOne
26 oct 2015 16:40:13

¿Hay alguna forma de recuperar el tamaño generado de la imagen destacada, el ancho y el alto de la publicación actual? Por ejemplo, si la imagen destacada establecida es de tamaño 540 x 400, aunque debería ser de 550 x 550. ¿Cómo recuperar el tamaño de la imagen destacada de la publicación actual para almacenar $width = 540 & $height = 400 en el ejemplo actual?

Nimesh Nimesh
7 may 2018 01:51:14

@Nimesh wp_get_attachment_metadata($attachment_id) te dará lo que necesitas.

jave.web jave.web
28 sept 2018 21:00:59
1

Después de obtener su ID ( get_post_thumbnail_id($YOUR_POST_ID) ), necesitas conocer la URL base de las subidas y los metadatos del adjunto.

La URL base de las subidas se puede encontrar en un array devuelto por wp_upload_dir().

Los metadatos del adjunto se pueden recuperar con wp_get_attachment_metadata().

Aquí tienes una función práctica que escribí para preparar los datos de la URL para cualquier adjunto de imagen, no solo las destacadas.

function prepareImageData( $attachment_id ){
  $uploads_baseurl = wp_upload_dir()['baseurl'];

  $prepared = [];
  $data = wp_get_attachment_metadata($attachment_id);
  $prepared = [
    'mime_type' => get_post_mime_type($attachment_id),
    'url' => $uploads_baseurl.'/'.$data['file'],
    'sizes' => [],
  ];

  foreach( $data['sizes'] as $size => $sizeInfo ){
    $prepared['sizes'][$size] = [
      'url' => $uploads_baseurl.'/'.$sizeInfo['file'],
    ];
  }

  return $prepared;
}
28 sept 2018 20:59:52
Comentarios

¡excelente! También podrías añadir $dir = pathinfo( $data['file'] )['dirname']; para usarlo como: 'url' => $uploads_baseurl.'/'.$dir.'/'.$sizeInfo['file'], ya que podrían faltar los directorios de año/mes

Ramon Fincken Ramon Fincken
11 feb 2021 16:51:01
1

Para obtener una imagen según el tamaño puedes usar la función predefinida de WordPress que es the_post_thumbnail( $size, $attr ).

Puedes usar los tamaños de medios predefinidos.

the_post_thumbnail();                 

the_post_thumbnail( 'thumbnail' );       // Miniatura (por defecto 150px x 150px máximo)
the_post_thumbnail( 'medium' );          // Resolución media (por defecto 300px x 300px máximo)
the_post_thumbnail( 'large' );           // Resolución grande (por defecto 640px x 640px máximo)
the_post_thumbnail( 'full' );            // Resolución completa (tamaño original subido)

the_post_thumbnail( array(100, 100) );   // Tamaño personalizado (100px x 100px)

Esto podría ayudarte.

26 oct 2015 14:40:25
Comentarios

El objetivo de la pregunta es que el OP buscaba encontrar los nombres de todos los tamaños de imagen disponibles, incluyendo cualquier tamaño adicional creado por el tema y/o plugins.

Phill Healey Phill Healey
7 ago 2017 23:16:22