警告,我是PHP新手。也是第一篇文章:)
目前,我有一个带有3个子字段的ACF组。我想遍历这些子字段并回显它们的“标签”和“值”。如果子字段为空,那么我希望循环跳过/不回显该值。我可以用以下方法模仿出来:
<?php
$objective_desc = "objective_desc";
$objective = get_field_object($objective_desc);
?>
<div class="item">
<?php if ( $objective_desc ): ?>
<h2 class="sub-sample-title"><?php echo $objective['label']; ?></h2>
<?php endif; ?>
<?php if ( $objective_desc ): ?>
<p class="sub-description"><?php echo $objective['value']; ?></p>
<?php endif; ?>
</div>
问题是我必须为组中的每个子字段复制并粘贴过去。我肯定有一种更优雅的方法。
答案 0 :(得分:0)
我认为您发布的代码中有错别字;您可能是想通过检查fup.PostedFile.SaveAs(Path.Combine(@"\path\to\folder", fup.PostedFile.FileName));
而不是Server.MapPath("~/path/to/folder/filename.jpg")
来检查“子字段”是否为空,对吗?如果您只是检查每次<?php if ( $objective_label ): ?>
是否为空,则可以在一个<?php if ( $objective_desc ): ?>
块内完成所有操作。
请小心使用空的$objective_desc
语句来检查变量是否为空。您应该改用空:if
。在您的代码中,您将$ objective_desc设置为最高,因此即使其中没有任何内容,它也将被评估为 true 。
可能有一些复杂的方法可以设置循环和额外的变量以使其更加“优雅”,但是由于您要基于子字段(if
,<?php if ( empty($objective_desc) ): ?>
等更改其他HTML元素, ),老实说,最好将其复制粘贴到一堆<h2>
语句中。它会更清晰,工作速度一样快,并且更易于调试。我的两分钱。
答案 1 :(得分:0)
我认为,如果您要遍历group子字段,我已经找到了解决方案。举例来说,您要遍历包含一组链接及其各自文本的组。您只需执行以下操作:
<?php $links = get_field('list_of_links'); ?>
<ul>
<?php foreach ($links as $link) {
if (!empty($link)): ?>
<li><a href="<?php echo $link['url'] ?>"><?php echo $link['title'] ?></a></li>
<?php endif; } ?>
</ul>