WordPress 中的高级自定义字段 - 无法在组内使用转发器
Posted
技术标签:
【中文标题】WordPress 中的高级自定义字段 - 无法在组内使用转发器【英文标题】:Advanced Custom Fields within WordPress - Unable to use a repeater within a group 【发布时间】:2020-11-05 05:00:09 【问题描述】:我之前已经这样做了 20 多次,但我无法弄清楚为什么我对中继器字段的调用会破坏我的网站。
由于 php 错误,页面无法加载,如果我删除调用中继器字段的 while 循环,它可以工作。
我想知道我在这个 sn-p 中做错了什么:
~转发器字段称为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" 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 错误导致页面无法加载”,错误是什么? 错误 500 - 我想我可能不得不在迭代 while 时使用 'the_sub_field' 而不是 'get_the_field',这对你来说是否正确。 打开调试模式从服务器获取真正的错误信息。 【参考方案1】:不是这个
<?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(又名 get_field)但你不会进入另一个中继器......
在我的例子中你有
中继器
sub_fields(又名 get_field) 中继器内中继器 然后您可以再次从中继器的这一部分中获取 sub_fields【讨论】:
真的很感谢帮助,我觉得很愚蠢,但我已经在使用你说要使用的线路了。请问您可以操作我提供的代码块,以便我可以看到您会在哪里使用它吗? @JasonIsMyName 修改了我的答案 欣赏你的兄弟!干得好c: 我之前至少做过 20 次,从来没有遇到过问题。这一次,即使在阅读了文档之后,我也看不出我哪里出错了!再次感谢!以上是关于WordPress 中的高级自定义字段 - 无法在组内使用转发器的主要内容,如果未能解决你的问题,请参考以下文章
WordPress 和高级自定义字段管理,仪表板中的自定义列
php 将重力表单文件上载到高级自定义字段WordPress中的图像/文件字段