首页 文章

在php while循环中创建一个元素

提问于
浏览
-1

我试图在wordpress循环中设置幻灯片 . 为此,我希望有一部分幻灯片内容,一部分用于导航 .

这是我的代码:

<div id="upcoming_shows">
        <?php if ( $shows->have_posts() ) : ?>
            <?php /* Start the Loop */ ?>               
            <?php while ( $shows->have_posts() ) : $shows->the_post(); ?>
                <?php //get rid of auto drafts and trash posts
                    $p_status =  get_post_status( $post );
                    if ($p_status != 'trash' and $p_status != 'auto-draft') : 
                ?>
<!--I WANT A containing DIV HERE created only once-->
               <div id="slides">
                    <div class="slide" id="slide-<?php echo $post->ID; ?>">
                        <?php the_post_thumbnail(); ?>
                        <p class="show_date"><?php echo get_field('show_date'); ?></p>
                        <h1 class="band_names"><a href="<?php the_permalink(); ?>" alt="link to blog post page"><?php the_title(); ?></a></h1>
                    </div><!--end Slide-->
<!--AND IT WILL END HERE-->
               </div><!-- end SLIDES CONTAINING DIV--> 
<!--THEN ANOTHER DIV HERE CONTAINING THE SLIDES_NAV-->
<div id="slides_nav"> <!--CREATE THIS ONLY ONCE as a wrapper-->
 <p class="band_names"><a href=#slide-"<?php $post->ID; ?>"><?php the_title(); ?></a></p>
</div><!--end slides nav CONTAINER-->
                <?php endif; ?><!--end Auto Draft check-->
            <?php endwhile; ?>          
            <?php endif; ?><!--end if haveposts-->


        </div><!--end upcoming_shows-->

我想要做的是在一个名为“幻灯片”的div中用一类“幻灯片”包装元素,然后创建另一组包含在名为“slides_nav”的div中的元素 .

我想办法说:

“如果这是循环的第一次迭代,则在所有”幻灯片“元素周围创建一个名为”幻灯片“的div .

“如果这是循环的第一次迭代,创建一个名为”slide_nav“的div来包装幻灯片导航元素”(它也将在循环内创建)(它们将是$ shows帖子和页面内部的 Headers 链接到幻灯片,其ID与slide_nav href匹配 . )

我试过了:

<?php $i=0;
    if ($i == 0) {
        echo '<div id="slides">';
        $i++;
    };

并且它正确地创建了div,但是为每张幻灯片都这样做了(我还添加了条件来关闭div) .

我是PHP fyi的初学者 .

我看了一些答案,在循环中创建了一些东西,并尝试了一些,但我相信我缺乏编程知识可能让我错过了一个简单的解决方案 .

谢谢

2 回答

  • 2

    为什么不在循环之前创建它?

    <?php
        echo '<div class="slides">';
        while( // the loop ){
            // your instructions
        }
    
  • 0

    对于任何其他可能偶然发现的PHP新手,我发现这是最好的答案 .

    在循环外创建div比任何其他可能的解决方案容易得多 . 虽然我可以有条件地将幻灯片div显示在循环内并包含每个幻灯片div,但这样做的逻辑只能在该循环中工作一次 .

    如果我想扩展它并有两个有条件创建的div,它变得更加复杂,我开始意识到为我需要的任何其他信息创建一个额外的循环更简单 .

    我问这个问题的原因是因为我假设创建两个循环以从同一个DB查询中获取相同的信息是不好的做法 .

    我不知道创建这两个单独的循环是否被认为是良好的做法,但我确实知道它更容易编程 .

    如果有人可以告诉我这是一个好的或坏的做法(在相同的信息上运行冗余查询和循环)来简化创建好(或必要)标记的过程,我会用正确的答案来信任你 .

    谢谢 .

相关问题