我正在尝试使用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">•</strong> <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
答案 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">•</strong> <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">•</strong> <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">•</strong> <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">•</strong> <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;?>