web-dev-qa-db-fra.com

Obtention de la légende d'image sélectionnée pour afficher uniquement si rempli

J'essaie de masquer la légende de l'image sélectionnée. Actuellement, cela montrera construire la div (mais pas la peupler car elle est vide). Idéalement, ce que j'aimerais faire est d'afficher la division uniquement si quelqu'un a saisi du texte dans la zone Légende (post_excerpt) du panneau Média.

Voici le code sur lequel je travaille:

    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 '<span>'.$thumbnail_image[0]->post_excerpt.'</span>';
      }
    }

Voici ce que j'ai moi-même essayé d'essayer de cacher la légende si elle est vide:

    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'));
      $thumbnail_caption = $thumbnail_image[0]->post_excerpt;
      $thumbnail_set = isset($thumbnail_image[0]);

        if (! empty($thumbnail_set)) {
          if ($thumbnail_image && isset($thumbnail_image[0])) {
            echo '<div class="img-caption"><h5>'.$thumbnail_caption.'</h5></div>';
          } else return;
      } else return;
    }

Ceci est le code dans mon modèle de page:

    <section class="entry-content">
        <?php if ( has_post_thumbnail() ) : ?>
            <figure class="featured-img alignright">
                <?php the_post_thumbnail('med_size'); ?>
                <?php the_post_thumbnail_caption(); ?>
            </figure><!-- .entry-page-image -->
        <?php endif; ?>
      <?php the_content(); ?>
    </section>

Lorsque je supprime la légende sur l'image sélectionnée. Il disparaît, mais la div est toujours en cours de création, ainsi que l'élément emtpy h5.

Voici des captures d'écran des deux états:

le lien lorsqu'une légende est laissée en blanc

Voici un lien quand une légende est remplie

Merci pour le conseil et l'aide!

1
tigre

Dans if ($thumbnail_image && isset($thumbnail_image[0])) { - $thumbnail_image[0] ne doit pas être $thumbnail_caption.

1
user27457

Depuis WordPress 4.6, la fonction the_post_thumbnail_caption() a été ajoutée à core (/wp-includes/post-thumbnail-template.php).

L'utilisation du code affiché ici provoquera l'erreur:

Fatal error: Cannot redeclare the_post_thumbnail_caption()
1
John Crumpton