Come mostrare la didascalia dell'immagine in evidenza solo se esiste?

28 ago 2013, 12:01:43
Visualizzazioni: 25.3K
Voti: 4

Sto usando questa funzione nel mio functions.php per mostrare la didascalia delle immagini in evidenza:

function the_post_thumbnail_caption() {
global $post;

$thumbnail_id    = get_post_thumbnail_id($post->ID);
$thumbnail_image = get_posts(array('p' => $thumbnail_id, 'post_type' => 'attachment'));

if ($thumbnail_image && isset($thumbnail_image[0])) {
echo '<div class="front-caption">'.$thumbnail_image[0]->post_excerpt.'</div>';
}
} 

E sto usando questo nel file del template per mostrare la didascalia:

<?php 
if (the_post_thumbnail_caption()) { 
 the_post_thumbnail_caption(); 
}
?>

Nel file functions ho la didascalia che viene mostrata in un div con class="front-caption" che sto stilizzando con i bordi. Se la didascalia non esiste, viene comunque mostrato il div vuoto con i bordi.

Se non esiste alcuna didascalia non voglio mostrare il div con i bordi. Voglio solo che non venga mostrato nulla.

Come posso codificare correttamente questo per farlo funzionare? Grazie in anticipo.

2
Commenti

Per favore (A) Non pubblicare risposte come commenti -> Aggiungi una risposta alla tua domanda. (B) Per favore rielabora la tua domanda. Ci sono tantissimi errori di battitura.

kaiser kaiser
28 ago 2013 12:21:47

Ora esiste un plugin che crea una funzione per ottenere la didascalia o qualsiasi altro campo dalla miniatura: http://wordpress.org/plugins/thumbnail-field/

User User
25 mag 2014 18:13:42
Tutte le risposte alla domanda 4
3

Sono "un po' in ritardo" ma questa soluzione ha funzionato benissimo per me. Mostrerà il div solo se la didascalia non è vuota.

<?php
$get_description = get_post(get_post_thumbnail_id())->post_excerpt;
the_post_thumbnail();
  if(!empty($get_description)){//Se la descrizione non è vuota mostra il div
  echo '<div class="featured_caption">' . $get_description . '</div>';
  }
?>
26 ott 2013 22:23:51
Commenti

Grazie Dejo, ne sono sicuro al 100% ma penso che sia quello con cui sono finito.

Paul Coppock Paul Coppock
27 ott 2013 21:47:23

Voto negativo. Ottimo ma non funziona in WP_Query per un loop personalizzato in un template di pagina.

Brad Dalton Brad Dalton
4 apr 2018 18:07:34

Voto positivo per controbilanciare @Dev perché, beh, devi sapere come funzionano i loop per far funzionare il codice nella tua situazione specifica, amico. Inoltre, quelli che votano negativo sono hater e la signorina Swift non li sopporta.

Nathan Nathan
30 lug 2020 00:17:14
0

Si prega di notare che a partire da WordPress 4.6, la funzione è stata aggiunta al core (/wp-includes/post-thumbnail-template.php).

Utilizzare il codice precedentemente pubblicato qui causerà l'errore:

Errore fatale: Non è possibile ridefinire the_post_thumbnail_caption()

Per evitare ciò, si prega di rinominare la funzione con un altro nome, o se si sta sviluppando per versioni precedenti di WordPress in un tema, aggiungere un controllo come il seguente:

if ( ! function_exists( 'the_post_thumbnail_caption' ) ) {
 function the_post_thumbnail_caption() {
  global $post;

  $thumbnail_id    = get_post_thumbnail_id($post->ID);
  $thumbnail_image = get_posts(array('p' => $thumbnail_id, 'post_type' => 'attachment'));

   if ($thumbnail_image && isset($thumbnail_image[0])) {
    return '<div class="front-caption">'.$thumbnail_image[0]->post_excerpt.'</div>';
   } else {
     return;
   }
 }
}
17 ago 2016 13:48:12
1

Potresti provare questo:

function the_post_thumbnail_caption() {
 global $post;

 $thumbnail_id    = get_post_thumbnail_id($post->ID);
 $thumbnail_image = get_posts(array('p' => $thumbnail_id, 'post_type' => 'attachment'));

  if ($thumbnail_image && isset($thumbnail_image[0])) {
   return '<div class="front-caption">'.$thumbnail_image[0]->post_excerpt.'</div>';
  } else {
    return;
  }
} 

e poi:

echo the_post_thumbnail_caption(); 
28 ago 2013 12:12:33
Commenti

Funziona perfettamente tranne quando ho una miniatura del post senza didascalia. Se non c'è una didascalia, stampa comunque il div "front-caption". Ho lo stile .front-caption con bordi e quando non c'è una didascalia mostra la miniatura del post con il div vuoto "front-caption" e i bordi. Sto cercando di fare in modo che il div sia nascosto a meno che non ci sia una didascalia per la miniatura del post.

Paul Coppock Paul Coppock
28 ago 2013 14:21:22
0

La maggior parte di queste risposte sembra piuttosto datata. Prova questa funzione:

the_post_thumbnail_caption();

Rif: https://developer.wordpress.org/reference/functions/the_post_thumbnail_caption/

Ad esempio:

<div class="featured-image-caption"><?php echo the_post_thumbnail_caption(); ?></div>
15 mag 2023 13:24:45