web-dev-qa-db-ja.com

追加された場合にのみ表示される注目の画像キャプションの取得

おすすめの画像のキャプションを表示しないようにしています。現在のところ、divをビルドするように表示されます(ただし、空なので入力しません)。私がやりたいことは、理想的には、誰かがメディアパネルのキャプション(post_excerpt)ボックスにテキストを入力した場合にのみdivを表示することです。

これは私が開発中のコードです:

    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>';
      }
    }

これは、キャプションが空の場合に自分でキャプションを隠してみたものです。

    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;
    }

これは私のページテンプレートのコードです:

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

注目の画像のキャプションを削除したときそれは消えますが、divはemtpyのh5要素と同様にまだ作成されています。

これが2つの状態のスクリーンキャプチャーです。

キャプションを空白のままにすると リンクされます

これはキャプションを記入したときのリンクです

アドバイスと助けてくれてありがとう!

1
tigre

if ($thumbnail_image && isset($thumbnail_image[0])) {では - $thumbnail_image[0]$thumbnail_captionであってはいけません。

1
user27457

WordPress 4.6では、関数the_post_thumbnail_caption()がcoreに追加されました(/wp-includes/post-thumbnail-template.php)。

ここに掲載されているコードを使用するとエラーが発生します。

Fatal error: Cannot redeclare the_post_thumbnail_caption()
1
John Crumpton