¿Cómo obtengo solo la URL de la imagen desde the_post_thumbnail()?
Quiero saber cómo obtener solo la URL de la imagen desde the_post_thumbnail()
. La salida predeterminada de the_post_thumbnail()
es:
<img width="800" height="533" src="http://example.com/wp-content/uploads/2011/02/book06.jpg" class="attachment-post-thumbnail wp-post-image" alt="libro06" title="libro06" />
Aquí quiero obtener solo el src
. ¿Cómo puedo filtrar the_post_thumbnail()
para obtener solamente http://example.com/wp-content/uploads/2011/02/book06.jpg
?

También puedes probar:
Si solo tienes un tamaño de miniatura:
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ) );
O... si tienes múltiples tamaños:
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), "size" );
Ten en cuenta que wp_get_attachment_image_src() devuelve un array: url, ancho, alto, is_intermediate.
Así que si solo quieres la URL de la imagen:
echo $thumbnail[0];
Recursos:

Un pequeño consejo: si estás utilizando la función wp_get_attachment_image_src() con tamaño y quieres obtener exactamente el tamaño de la miniatura: usa el nombre de la miniatura dado en la definición (función add_image_size()). Si usas un array con dimensiones, WP usará el primer tamaño de imagen que tenga el ancho o alto adecuado. Así que podrías obtener una imagen incorrecta. Ejemplo: en lugar de 156x98 podrías haber obtenido 120x98 si tienes 2 imágenes definidas: 156x98 & 120x98 (la altura es la misma). Yo caí en eso una vez ;)

Desde WordPress 4.4, hay una función central eficiente que puede manejar esto de una manera más limpia que las respuestas aquí.
Puedes usar the_post_thumbnail_url( $size )
que imprimirá la URL de la miniatura del post.
Alternativamente, si prefieres devolver la URL en lugar de mostrarla inmediatamente, puedes usar $url = get_the_post_thumbnail_url( $post_id, $size )

Entendido, lo resolví usando simplexml_load_string
$dom = simplexml_load_string(get_the_post_thumbnail());
$src = $dom->attributes()->src;
echo $src;
Otros métodos también son bienvenidos.

Por favor utiliza el siguiente código
<?php get_the_post_thumbnail_url(); ?>
Si no es suficiente para lograr tu objetivo, entonces prueba con este código
<?php $postimages = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'large' );
// Verificar si hay imágenes if ( $postimages ) {
// Obtener imagen destacada $postimage = $postimages[0];
} else {} while (have_posts() && $i < 8) : the_post(); echo esc_url( $postimage ); ?>

Para una solución rápida y sencilla, coloca esto en el archivo functions.php
de tu tema
FUNCTION GET_STRING_BETWEEN($STRING, $START, $END){
$STRING = " ".$STRING;
$INI = STRPOS($STRING, $START);
IF ($INI == 0) RETURN "";
$INI += STRLEN($START);
$LEN = STRPOS($STRING, $END, $INI) - $INI;
RETURN SUBSTR($STRING, $INI, $LEN);
}
Usado dentro del loop, esto te dará lo que estás buscando
Esto retornará algo como http://example.com/wp-content/uploads/2019/02/toy-story-two-was-ok.jpg
$THE_FEATURED_IMAGE = GET_STRING_BETWEEN(get_the_post_thumbnail(NULL,'post-large'), 'src="', '" class="');
"Dentro del loop" significa buscar algo como while ( have_posts() ): the_post();
.
También puedes reemplazar post-large
con cualquiera de estos tamaños predefinidos de imagen:
post-thumbnail
post-medium
post-full
