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
我以前这样做过 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