高级自定义字段:遍历组子字段值?

时间:2018-08-29 01:04:35

标签: php wordpress advanced-custom-fields

警告,我是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>

问题是我必须为组中的每个子字段复制并粘贴过去。我肯定有一种更优雅的方法。

2 个答案:

答案 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>