0

他のすべての添付ファイルのキャプションを出力し、連続する ID を含む div 内でそれぞれを適切にフォーマットする関数を作成しようとしています。ただし、post_excerpt の前後に echo と echo を追加すると、コードが完全に壊れます。私の HTML 出力に基づくと、最初のエコーは、2 回目のループまで無視されるようです。echo div コードを取り出すと、キャプションは問題なく投稿されるようです。

             <?php while ( have_posts() ) : the_post(); ?>
             <?php
                $argsThumb = array(
                    'orderby' => 'menu_order',
                    'order' => 'ASC',
                    'post_type' => 'attachment',
                    'post_status' => null,
                    'post_parent' => $post->ID,
                    'include'  => $thumb_id
                );
               $thumb_images = get_posts($argsThumb);
               $currentThumb = 1;
               $captionID=1;
               foreach ($thumb_images as $thumb_image) {
                   if ($currentThumb % 2 == 0)
                        echo '<div class="caption'.$captionID++.'">';
                        echo $thumb_image->post_excerpt;
                        echo '</div>';
                        $currentThumb++;
               }
            ?>
           <?php endwhile; // end of the loop. ?>

これが私のHTML出力です。理論的には、10個の画像があり、コードが他のすべての画像キャプションをプルすると想定されているという事実に基づいて、5つのキャプションがあるはずです:

    <div class="caption1"></div>
    BEFORE 3</div>
    <div class="caption2">CLIENT: ELYSIAN<br>AGENCY: IN HOUSE<br>PHOTOG: JEFF SCIORTINO<br><br><p>THIS IMAGE WAS PART OF A SERIES SHOT FOR THE ELYSIAN. I WAS APPROACHED TO ADD ELEMENTS THAT WERE NOT POSSIBLE TO CAPTURE IN CAMERA.</p></div>
    AFTER 2.</div>
    <div class="caption3">BEFORE 1</div>
4

1 に答える 1

1

ifブロックを中かっこで囲むのを忘れていることが 1 つの問題のようです。

今、あなたが持っているのは基本的にこれです:

foreach ($thumb_images as $thumb_image) {
    if ($currentThumb % 2 == 0) {
         echo '<div class="caption'.$captionID++.'">';
    }

    echo $thumb_image->post_excerpt;
    echo '</div>';
    $currentThumb++;
}

したがって、代わりに次のように表示することをお勧めします。

foreach ($thumb_images as $thumb_image) {
    if ($currentThumb % 2 == 0) {
         echo '<div class="caption'.$captionID++.'">';
         echo $thumb_image->post_excerpt;
         echo '</div>';
         $currentThumb++;
    }
}

この上記のエラーは、単一行の if ブロックであっても、常に中かっこを含めることをお勧めします。

ただし、これで問題が完全に解決されるとは思いません。echo '</div>';5 回発生していることがわかりますので、データをもう一度確認することをお勧めします。私の推測では、foreach ($thumb_images as $thumb_image)ループにはつかむアタッチメントが 5 つしかないということです。

于 2012-02-05T02:00:38.423 に答える