Je ne vous ferai pas l’affront d’expliquer comment ajouter une légende à une image quand on édite un article. Ici, il s’agit d’ajouter dans votre thème une légende à l’image mise en avant d’un article, si vous l’utilisez dans le template single.php.

Première chose, créer une fonction qui va afficher le contenu de la légende – fonction à ajouter dans functions.php du thème :

function djth_post_thumbnail_caption() 
{
     $thumbnail_image = get_posts
     ( 
         array
         (
             'p' => get_post_thumbnail_id(), 
             'post_type' => 'attachment'
         )
     );

     if( $thumbnail_image && isset( $thumbnail_image[0] ) ) 
     {
         echo $thumbnail_image[0]->post_excerpt;
     }
}

Cette fonction récupère l’image mise en avant (thumbnail) de l’article courant ($thumbnail_image) grâce à la fonction get_post_thumbnail_id(), puis extrait et affiche la légende de l’image ($thumbnail_image[0]->post_excerpt

Ensuite, ajouter l’affichage de la légende dans le template d’article single.php, juste en-dessous du code qui affiche l’image mise en avant (ce dernier devrait ressembler plus ou moins ce qui est dans le <div class= »post-thumbnail »>) :

<?php if( has_post_thumbnail() ) : // Check if thumbnail exists ?>
 <div class="post-thumbnail">
     <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
          <?php the_post_thumbnail( 'large' ); ?>
     </a>
 </div> <!-- /post-thumbnail -->
 
<div class="post-thumbnail-caption">
 <?php djth_post_thumbnail_caption(); ?>
 </div> <!-- /post-thumbnail-caption -->
 <?php endif; ?>

La légende est donc affichée dans le <div class= »post-thumbnail-caption »>

Enfin, un peu de CSS pou mettre tout ça en forme, par exemple :

.post-thumbnail-caption
{
     background: #EEEEEE;
     text-align: center;
     color: #555555;
     padding: 5px 10px;
}

Source :

  • https://stackoverflow.com/questions/13850313/how-to-add-a-featured-image-caption-in-wordpress