Come visualizzare l'immagine in evidenza di una pagina?
Voglio ottenere l'URL dell'immagine in evidenza di una pagina, poiché desidero utilizzarla come immagine di sfondo per il banner nella parte superiore della pagina. L'immagine di sfondo del banner cambia in base alla pagina in cui mi trovo, poiché ogni pagina avrà diverse immagini in evidenza.

Adattato da questa discussione sui forum di WP:
<?php if (has_post_thumbnail( $post->ID ) ): ?>
<?php $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'single-post-thumbnail'); ?>
<style>
#banner-id {
background-image: url('<?php echo $image[0]; ?>');
}
</style>
<?php endif; ?>
Aggiungi questo al tuo template di pagina singola, dopo the_post()
. Consiglio di avere un'immagine di intestazione predefinita in modo che, se la pagina non ha un'immagine in evidenza, venga utilizzata quella.
'single-post-thumbnail'
può essere sostituito con un array contenente le dimensioni ideali per l'intestazione, ad esempio array(600, 30)
.

Dato che stai utilizzando l'immagine al di fuori del loop, devi prima ottenere l'ID del post. Poi usalo per ottenere l'URL dell'immagine in evidenza.
function wpse207895_featured_image() {
//Esegui se è una pagina singola
if ( is_singular() ) {
$id = get_queried_object_id ();
// Controlla se il post/pagina ha un'immagine in evidenza
if ( has_post_thumbnail( $id ) ) {
// Cambia la dimensione dell'anteprima, ma immagino che 'full' sia ciò che ti serve
$image = wp_get_attachment_image_src( get_post_thumbnail_id( $id ), 'full' );
$url = $image[0];
} else {
//Imposta un'immagine predefinita se l'Immagine in Evidenza non è impostata
$url = '';
}
}
return $url;
}
Ora puoi usare questo per visualizzare l'URL dell'immagine in evidenza nell'header.
<?php echo wpse207895_featured_image();?>
Per esempio:
<header class="site-header" style="background-image: url('<?php echo wpse207895_featured_image();?>');">
....
....
</header>

Ho scoperto che questa soluzione ha funzionato per me
Puoi utilizzare l'immagine in evidenza della pagina come immagine di sfondo per un elemento in questo modo -->
<?php $backgroundImg = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'full' );?>
<article class="banner" style="background-image(url('<?php echo $backgroundImg[0]; ?>'))"></article>
Ma ti consiglierei di usarla in un elemento immagine, nell'attributo 'src' -->
<article class="banner">
<?php $backgroundImg = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'full' );?>
<img src="<?php echo $backgroundImg[0]; ?>" alt="Immagine in evidenza">
</article>
e impostare la dimensione dell'immagine in modo che si adatti alla dimensione dell'elemento banner.
