0

我正在尝试编写一个函数,该函数将输出所有其他附件标题并在包含顺序 ID 的 div 中很好地格式化每个附件。但是,每当我在 post_excerpt 前后添加回声和回声时,我的代码都会完全崩溃。根据我的 HTML 输出,第一个回声似乎被忽略了,直到第二次通过循环。如果我取出 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 输出,理论上应该有 5 个标题,基于我有 10 个图像的事实,并且假设代码会拉出所有其他图像标题:

    <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块包裹在大括号中。

现在,你所拥有的基本上是这样的:

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

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

所以,你可能想让它看起来像这样,intead:

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>';情况发生了五次。我的猜测是foreach ($thumb_images as $thumb_image)循环只有五个附件可以抓取。

于 2012-02-05T02:00:38.423 回答