WordPress 中的高级自定义字段 - 无法在组内使用转发器

Advanced Custom Fields within WordPress - Unable to use a repeater within a group

我以前这样做过 20 多次,但我不明白为什么我对中继器字段的调用会破坏我的站点。

页面由于 php 错误而无法加载,如果我删除调用转发器字段的 while 循环,它就会工作。

我想知道我在这段代码中做错了什么:

~ 转发器字段称为 application_sectors,可能是开始寻找修复的好地方!

<?php
$has_applications_of_ebflow = get_field('has_applications_of_ebflow');
?>

<?php if ( $has_applications_of_ebflow === TRUE ): ?>

    <div class="applications-of-ebflow">

        <div class="applications-of-ebflow-inner">

            <?php
            $applications_of_ebflow = get_field('applications_of_ebflow');
            while ( have_rows('applications_of_ebflow') ): the_row();
                $heading = get_sub_field('heading');
                $application_sectors = get_sub_field('application_sectors');
                $enquiry_link = get_sub_field('enquiry_link');
            ?>

                <?php if ( $heading != '' ): ?><h2 class="aoe-heading"><?php echo $heading; ?></h2><?php endif; ?>

                <?php if ( $application_sectors != '') : ?>

                    <div class="aoe-application-sectors">

                        <?php
                        while ( have_rows('application_sectors') ): the_row();
                            $image = get_sub_field('image');
                            $heading = get_sub_field('heading');
                            $sector_applications = get_sub_field('sector_applications');
                        ?>

                            <div class="aoe-application-sector">

                                <?php if ( $image != '' ): ?>

                                    <div class="aoe-application-sector-image-contain">

                                        <img class="aoe-application-sector-image" alt="sector image" src="<?php echo $image; ?>">

                                    </div>

                                <?php endif; ?>

                                <div class="aoe-application-sector-content">

                                    <?php if ( $heading != '' ): ?>

                                        <h3 class="aoe-sector-heading"><?php echo $heading; ?></h3>

                                    <?php endif; ?>

                                    <?php if ( $sector_applications != '' ): ?>

                                        <div class="sector-applications">

                                            <?php
                                            while ( have_rows('application_sectors') ): the_row();
                                                $application = get_sub_field('application');
                                            ?>

                                                <div class="sector-application">

                                                    <?php echo $application; ?>

                                                </div>

                                            <?php endwhile; ?>

                                        </div>

                                    <?php endif; ?>

                                </div>

                            </div>

                        <?php endwhile; ?>

                    </div>

                <?php endif; ?>

                <?php if ( $enquiry_link != '' ): ?>

                    <div class="aoe-enquiry">
                        <a href="<?php echo $enquiry_link; ?>" class="box-link"></a>
                        <div class="enquiry-text">Enquire about your application</div>
                    </div>

                <?php endif; ?>

            <?php endwhile; ?>

        </div>

    </div>

<?php endif; ?>

我还可以附上我的 ACF 的屏幕截图:

我很确定我错误地调用了我的转发器字段,但不记得我以前是如何解决这种情况的。

而不是这个

<?php
$sector_applications = get_sub_field('sector_applications');
?>

使用这个

while ( have_rows('sector_applications') ): the_row();

然后打电话给你的sub_fields。它是中继器中的中继器。就像 foreach 中的 foreach 循环。你称它为字段,但实际上有行。

have_rows() – allows us to loop through the available rows in a repeater / flexible content field
get_sub_field() – returns the value of a sub field (from the current repeater in “has_sub_field”)
the_sub_field() – displays the value of a sub field (from the current repeater in “has_sub_field”)

您可以在 ACF | Working with Nested Repeaters

中找到更多信息和很好的示例

我觉得问题出在这里,我修改了你的部分代码

<?php
while ( have_rows('application_sectors') ): the_row();
$image = get_sub_field('image');
$heading = get_sub_field('heading');

while ( have_rows('sector_applications') ): the_row();
?>

你的结构是这样的: 中继器

  • sub_fields (a.k.a get_field)

但是你不会进入另一个中继器...

在我的例子中你有

中继器

  • sub_fields (a.k.a get_field)
  • 中继器内中继器
    • 然后你可以再次从中继器的这一部分sub_fields