Come ottenere solo l'URL dell'immagine da the_post_thumbnail()?
Voglio sapere come ottenere solo l'URL dell'immagine da the_post_thumbnail()
. L'output predefinito di the_post_thumbnail()
è:
<img width="800" height="533" src="http://example.com/wp-content/uploads/2011/02/book06.jpg" class="attachment-post-thumbnail wp-post-image" alt="book06" title="book06" />
Qui voglio estrarre solo il valore di src
. Come posso filtrare the_post_thumbnail()
per ottenere solo http://example.com/wp-content/uploads/2011/02/book06.jpg
?

Potresti anche provare:
Se hai solo una dimensione per la miniatura:
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ) );
Oppure...se hai più dimensioni:
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), "size" );
Nota che wp_get_attachment_image_src() restituisce un array: url, larghezza, altezza, is_intermediate.
Quindi se vuoi solo l'URL dell'immagine:
echo $thumbnail[0];
Risorse:

Un piccolo suggerimento: se stai utilizzando la funzione wp_get_attachment_image_src() con la dimensione e vuoi ottenere esattamente la dimensione della miniatura: usa il nome della miniatura specificato nella definizione (funzione add_image_size()). Se usi un array con le dimensioni, WordPress utilizzerà la prima dimensione di immagine che ha la larghezza o altezza corretta. Quindi potresti ottenere l'immagine sbagliata. Esempio: invece di 156x98 potresti ottenere 120x98 se hai 2 immagini definite: 156x98 & 120x98 (l'altezza è la stessa). Ci sono caduto una volta ;)

Da WordPress 4.4, esiste una funzione core efficiente che può gestire questo in modo più pulito rispetto alle risposte qui presenti.
Puoi utilizzare the_post_thumbnail_url( $size )
che stamperà l'URL dell'immagine in evidenza del post.
In alternativa, se preferisci restituire l'URL invece di stamparlo immediatamente, puoi usare $url = get_the_post_thumbnail_url( $post_id, $size )

Ok, capito, ho usato simplexml_load_string
$dom = simplexml_load_string(get_the_post_thumbnail());
$src = $dom->attributes()->src;
echo $src;
Sono benvenuti altri metodi.

Utilizza il codice seguente
<?php get_the_post_thumbnail_url(); ?>
Se non è sufficiente per raggiungere il tuo obiettivo, prova con questo codice
<?php $postimages = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'large' );
// Verifica la presenza di immagini
if ( $postimages ) {
// Ottieni l'immagine in evidenza
$postimage = $postimages[0];
} else {}
while (have_posts() && $i < 8) : the_post();
echo esc_url( $postimage ); ?>

Per una soluzione rapida e sporca, inserisci questo nel file functions.php
del tuo 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);
}
Utilizzato all'interno del loop, questo ti darà ciò che stai cercando
Questo restituirà qualcosa come 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="');
"All'interno del loop" significa cercare qualcosa come while ( have_posts() ): the_post();
.
Puoi anche sostituire post-large
con una di queste dimensioni predefinite per le immagini:
post-thumbnail
post-medium
post-full
