Obteniendo la ruta de la miniatura en lugar de la etiqueta de imagen
Veo muchos métodos para mostrar miniaturas en WordPress, pero no estoy seguro de cómo puedo obtener solo la ruta de la miniatura de una publicación en lugar del código HTML listo para usar generado por funciones como the_post_thumbnail()
y get_the_post_thumbnail()
.
¿Qué métodos están disponibles para obtener solo la ruta de la miniatura (para establecerla como imagen de fondo) en lugar de la etiqueta <img />
? ¿Tengo solo la opción de analizar los resultados del método get_
o hay una manera más fácil?

La miniatura es esencialmente un adjunto, por lo que puedes abordarlo desde ese lado: busca el ID con get_post_thumbnail_id()
y obtén los datos con wp_get_attachment_image_src()
, así:
if (has_post_thumbnail()) {
$thumb = wp_get_attachment_image_src(get_post_thumbnail_id(), 'thumbnail_name');
echo $thumb[0]; // URL de la miniatura
}
(fuente)

Cuando necesito mostrar una miniatura que está adjunta a la galería de una publicación, utilizo una función personalizada en mi functions.php. Puede ser excesivo para tus necesidades, pero debería cubrir todo.
En este ejemplo, recupero todas las imágenes en la galería de una publicación y luego muestro cada imagen en un elemento de lista. La lista contiene la imagen miniatura envuelta en un ancla que enlaza a la publicación de la que proviene la imagen. La cadena de salida se puede personalizar fácilmente según tus necesidades.
function get_gallery_image_thumb_list($size){
global $post;
$args = array(
'numberposts' => null,
'post_parent' => $post->ID,
'post_type' => 'attachment',
'nopaging' => false,
'post_mime_type' => 'image',
'order' => 'ASC',
'orderby' => 'menu_order ID',
'post_status' => 'any'
);
$attachments =& get_children($args);
if ($attachments) {
foreach($attachments as $attachment) {
foreach($attachment as $attachment_key => $attachment_value) {
$imageID = $attachment->ID;
$imageTitle = $attachment->post_title;
$imageCaption = $attachment->post_excerpt;
$imageDescription = $attachment->post_content;
$imageAlt = get_post_meta($imageID, '_wp_attachment_image_alt', true);
$imageArray = wp_get_attachment_image_src($attachment_value, $size, false);
$imageURI = $imageArray[0]; // 0 es la URI
$imageWidth = $imageArray[1]; // 1 es el ancho
$imageHeight = $imageArray[2]; // 2 es la altura
// Construir la cadena <img>
$ImgString = '<li><a href="' . get_permalink() . '" title="' . the_title("", "", false) . '"><img src="' . $imageURI . '" width="' . $imageWidth . '" height="' . $imageHeight . '" alt="' . $imageAlt . '" title="' . $imageTitle . '" /></a></li>';
// Mostrar la imagen
echo $ImgString;
break;
}
}
}
unset($args);}
Luego llama a la función y pasa el tamaño de imagen que deseas obtener (thumbnail, medium, large o full) así:
get_gallery_image_thumb_list("thumbnail");
Esto debe llamarse dentro de The Loop o un bucle personalizado.
