我不确定我是否正确地这样做了?我有一个嵌套的ACF转发器,它工作正常,但该部分都显示为一个单独的块。我希望能够将块分成列。所以我要做到这一点,我需要一个" foreach"声明所以我可以为每个部分分配一个id或类,让我能够单独设置每个部分的样式 - 浮动并添加边距等。
我无法让它发挥作用!
<div class="col-xl-12 food-section">
<?php
$rows = get_field('section_container');
if($rows) {
foreach($rows as $row):
?>
<div class="col-xl-6 section-test"> <?php
if( have_rows('section_container') ) :
while( have_rows('section_container') ): the_row(); ?>
<h1><?php the_sub_field('section_heading'); ?></h1>
<div class="section-image"><?php
$image = get_sub_field('section_image');
if( !empty($image) ): ?>
<img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" />
</div>
<?php endif;
if( have_rows('sub_section_container') ):
while( have_rows('sub_section_container') ): the_row();
?>
<h2><?php the_sub_field('sub_section_heading'); ?></h2>
<?php
if( have_rows('food_item') ):
while( have_rows('food_item') ): the_row();
?>
<div id="menu-table">
<h3 id="leftside"><?php the_sub_field('item_name'); ?></h3>
<h4 id="rightside"><?php the_sub_field('price'); ?></h4>
<div id="menu-description"><p><?php the_sub_field('item_description'); ?></p></div>
<div class="stroke"></div>
</div>
<?php endwhile; //food_item
endif; //food_item
endwhile; //section_h1_container
endif; //section_h1_container
endwhile; //section_container
endif; //section_container
wp_reset_postdata();
endforeach; }
?></div>
</div><!-- food-section -->
答案 0 :(得分:0)
我已经清理了你的代码,我希望我能理解你的要求。您在代码段的顶部有一个不必要的if和foreach,以及在ACF中的转发器调用结束时不需要的wp_reset_postdata()。
您可以在此处阅读有关嵌套转发器的更多信息:
https://www.advancedcustomfields.com/resources/working-with-nested-repeaters/
<?php if( have_rows('section_container') ) : ?>
<div class="col-xl-12 food-section">
<?php while( have_rows('section_container') ): the_row(); ?>
<div class="col-xl-6 section-test">
<h1><?php the_sub_field('section_heading'); ?></h1>
<div class="section-image">
<?php $image = get_sub_field('section_image');
if( !empty($image) ): ?>
<img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" />
<?php endif; ?>
</div>
<?php if( have_rows('sub_section_container') ):
while( have_rows('sub_section_container') ): the_row(); ?>
<h2><?php the_sub_field('sub_section_heading'); ?></h2>
<?php if( have_rows('food_item') ):
while( have_rows('food_item') ): the_row(); ?>
<div id="menu-table">
<h3 id="leftside"><?php the_sub_field('item_name'); ?></h3>
<h4 id="rightside"><?php the_sub_field('price'); ?></h4>
<div id="menu-description"><p><?php the_sub_field('item_description'); ?></p></div>
<div class="stroke"></div>
</div>
<?php endwhile; //food_item
endif; //food_item
endwhile; //section_h1_container
endif; //section_h1_container ?>
</div>
<?php endwhile; //section_container ?>
</div>
<?php endif; //section_container ?>
此代码段检查是否为“section_container”设置了任何行,如果是,则创建“food-section”div。然后它遍历“section_container”的每一行。对于每一行,它创建一个“section-test”div,并开始用该行的子字段数据填充它。然后它检查当前行中的“sub_section_container”转发器,并遍历嵌套转发器内的行,并输出数据。