当转发器字段包含多个6个值时,创建一个新的引导列

时间:2019-07-17 11:47:00

标签: php wordpress advanced-custom-fields

我正在尝试使用ACF Repeater字段和自定义帖子类型构建餐厅菜单,自定义帖子类型的标题告诉类别,例如BBQ,repeater_fields显示菜单项问题是我想创建一个新菜单当li达到循环中的6个项目时的引导程序列。

<div class="fadeIn col-lg-12 col-sm-12 col-md-12" >
<?php $loop = new WP_Query(array('post_type'=>'menu'));
    if($loop->have_posts()) :
        $i=0;
        ?>
        <div class="row">
    <?php while($loop->have_posts() ): $loop->the_post(); ?> 
<ul style="width:50%" class="menu-list col-md-6 column  <?php echo the_title(); ?>">
        <?php while(the_repeater_field('item')):  ?>
        <li style="max-width:1000px;"><strong class="icon">&#x2022;</strong>&nbsp;<b><?php the_sub_field('heading'); ?></b><span class="price" >1.95</span><br><strong style="font-weight:400;margin-left:22px;">Soybean paste broth</strong></li>
        <?php  endwhile;?>  
    </ul>
 <?php endwhile;  endif; ?>
</div>

</div>

如果li中的项目超过5个,我想自动创建一个新的col-md-6 ul

3 个答案:

答案 0 :(得分:0)

尝试一下:

<div class="fadeIn col-lg-12 col-sm-12 col-md-12" >
    <?php $loop = new WP_Query(array('post_type'=>'menu'));
    if($loop->have_posts()) :
    $i=0;
    ?>
    <div class="row">
        <?php while($loop->have_posts() ): $loop->the_post(); ?>
            <?php $j = 0; ?>
        <ul style="width:50%" class="menu-list col-md-6 column  <?php echo the_title(); ?>">
            <?php while(the_repeater_field('item')):  ?>
                <?php if ($j === 5): ?>
                    </ul><ul style="width:50%" class="menu-list col-md-6 column  <?php echo the_title(); ?>">
                    <?php $j = 0; ?>
                <?php endif; ?>
                <li style="max-width:1000px;"><strong class="icon">&#x2022;</strong>&nbsp;<b><?php the_sub_field('heading'); ?></b><span class="price" >1.95</span><br><strong style="font-weight:400;margin-left:22px;">Soybean paste broth</strong></li>
                <?php $j++; ?>
            <?php  endwhile;?>
            </ul>
        <?php endwhile;  endif; ?>
    </div>
</div>

答案 1 :(得分:0)

也许这样的东西可以工作?

    <div class="fadeIn col-lg-12 col-sm-12 col-md-12" >
<?php $loop = new WP_Query(array('post_type'=>'menu'));
    if($loop->have_posts()) :
        $i=0;
        ?>
        <div class="row">

    <?php while($loop->have_posts() ): $loop->the_post(); ?>
        <?php $i = 0; ?>
        <ul style="width:50%" class="menu-list col-md-6 column  <?php echo the_title(); ?>">
        <?php while(the_repeater_field('item')):  ?>
        <?php ++$i; ?>
        <?php if($i % 6 == 0): ?>
         </ul>
         <ul style="width:50%" class="menu-list col-md-6 column  <?php echo the_title(); ?>">
        <?php endif; ?>     
        <li style="max-width:1000px;"><strong class="icon">&#x2022;</strong>&nbsp;<b><?php the_sub_field('heading'); ?></b><span class="price" >1.95</span><br><strong style="font-weight:400;margin-left:22px;">Soybean paste broth</strong></li>

        <?php  endwhile;?>  
    </ul>
 <?php endwhile;  endif; ?>
</div>

</div>

编辑:由于我无法发表评论... @ Bas Mulder发表的已批准答案将不起作用,如果您有12个以上条目:

<div class="row">
        <?php while($loop->have_posts() ): $loop->the_post(); ?>
            <?php $j = 0; ?>
        <ul style="width:50%" class="menu-list col-md-6 column  <?php echo the_title(); ?>">
            <?php while(the_repeater_field('item')):  ?>
                <?php if ($j === 5): ?>
                    </ul><ul style="width:50%" class="menu-list col-md-6 column  <?php echo the_title(); ?>">
                    <?php $j = 0; ?>
                <?php endif; ?>
                <li style="max-width:1000px;"><strong class="icon">&#x2022;</strong>&nbsp;<b><?php the_sub_field('heading'); ?></b><span class="price" >1.95</span><br><strong style="font-weight:400;margin-left:22px;">Soybean paste broth</strong></li>
                <?php $j++; ?>
            <?php  endwhile;?>
            </ul>
        <?php endwhile;  endif; ?>
    </div>

第二次,它将在5个条目上创建新的UL。一旦创建了新的UL,j就会设置为0,并立即增加到1,因此一旦您的代码达到11个元素,就会创建新的UL。

编辑2:由于问题,我更新了答案,所以是最初的

$i++;

已更改为

++$i;

第二个解决方案是移动$ i ++;如下:

   <?php if($i % 6 == 0): ?>
   <?php ++$i; ?>

答案 2 :(得分:0)

我要添加另一个答案,因为它与原始问题没有直接关系。 根据评论,要使两个具有li元素的ul可以这样做:

$my_fields = get_field_object('item'); 
$count = count(($my_fields['value'])); 
$showFirst = ceil($count/2);
$showSecond = $count - $showFirst; 

比您做类似的事情:

<?php $show = $showFirst; ?>

 <ul style="width:50%" class="menu-list col-md-6 column  <?php echo the_title(); ?>">
 <?php for($i = 0; $i < $show; $i++):  ?>
    <li style="max-width:1000px;">
        <strong class="icon">&#x2022;</strong>&nbsp;<b><?php the_sub_field('heading'); ?></b><span class="price" >1.95</span><br><strong style="font-weight:400;margin-left:22px;">Soybean paste broth</strong>
    </li>
 <?php if($i == ($show - 1)): ?>
 </ul>
 <ul style="width:50%" class="menu-list col-md-6 column  <?php echo the_title(); ?>">
    $i = 0;
    $show = $showSecond;
<?php endif; ?> 
<?php  end for;?>