【问题标题】:Wordpress Caption ArrayWordpress 标题数组
【发布时间】:2012-02-05 00:42:40
【问题描述】:

我正在尝试编写一个函数,该函数将输出每隔一个附件标题,并在包含顺序 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>

【问题讨论】:

    标签: php arrays wordpress caption


    【解决方案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++;
    }
    

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

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

    【讨论】:

    • 感谢您的快速回答!我还必须将 foreach 更改为 $attachments 作为 $attachment,而不是根据 $thumb_images 的数量来确定字幕的数量。
    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    相关资源
    最近更新 更多