¿Cómo obtener todos los tamaños de imagen destacada y sus URLs?
¿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?

No recuerdo una función que haga precisamente eso, pero se puede lograr fácilmente con la API en general:
- Obtener el ID del adjunto con
get_post_thumbnail_id()
- Obtener los tamaños disponibles con
get_intermediate_image_sizes()
- Para cada tamaño usar
wp_get_attachment_image_src()
, que proporciona exactamente los datos que necesitas (URL y dimensiones).

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

¿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?

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;
}

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.
