Come visualizzare l'immagine in evidenza di una pagina?

7 nov 2015, 18:20:42
Visualizzazioni: 30.5K
Voti: 6

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.

0
Tutte le risposte alla domanda 3
2

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).

7 nov 2015 18:47:04
Commenti

Felice di aiutare. Potresti segnare la domanda come risposta? Grazie.

kittsville kittsville
8 nov 2015 21:44:07

Non dovresti mettere PHP nel tuo CSS comunque

JGallardo JGallardo
15 set 2017 02:14:01
0

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>
7 nov 2015 18:52:14
0

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.

14 mag 2020 23:08:25