Wordpress ACF 中继器子字段

Posted

技术标签:

【中文标题】Wordpress ACF 中继器子字段【英文标题】:Wordpress ACF Repeater sub fields 【发布时间】:2019-03-30 02:06:22 【问题描述】:

我在 Wordpress 中遇到问题,ACF 中继器子字段链接对象未在前端返回 href。基本上前端的链接不会输出 WP admin 中设置的任何链接。文本输出正常。

中继器字段:

Field label = Link to doc
Field name = link_to_doc
Field type = Repeater

中继器子字段 1:

Field label = Link
Field name = link
Field type = Link

中继器子字段 2:

Field label = Text of link
Field name = text_of_link
Field type = Text

php 代码:

<?php if ($section['link_to_doc']) : ?>
    <?php foreach ($section['link_to_doc'] as $link) : ?>
       <div>
       <a href="<?= $link['link'] ?>" class="btn-txt">
       <?= $link['text_of_link'] ?>
      </a>
        </div>
     <?php endforeach; ?>
<?php endif; ?>

谁能检查一下 php 代码,让我知道哪里出了问题?

【问题讨论】:

在您的 if 语句中,您没有检查任何内容。尝试说“if(isset($section['link_to_doc'])”或检查它是否不为空。您也可以“var_dump”你的 $section 数组以查看它是否已设置。 另外,ACF 不返回数组,它返回对象,所以要访问它你需要说 $section->link_of_text 【参考方案1】:

这个话题暂时没有答案,你可能已经找到了解决方案。但是现在 ACF 正在解释如何直接在文档中访问嵌套中继器的数据。

<?php
// Loop over the first repeater
if( have_rows('type') ):
    while( have_rows('type') ) : the_row();

        // Loop over sub repeater rows.
        if( have_rows('type') ):
            while( have_rows('type') ) : the_row();

                // Get sub value.
                $child_title = get_sub_field('name');

            endwhile;
        endif;
    endwhile;
endif;

还有其他方法可以访问此类数据,以下是列表: https://www.advancedcustomfields.com/resources/repeater/

【讨论】:

以上是关于Wordpress ACF 中继器子字段的主要内容,如果未能解决你的问题,请参考以下文章

表中的 ACF 中继器字段 - 在 PHP 模板中

Wordpress ACF 中继器字段 - 仅拉入前 2 个字段

php 用于跟踪代码的ACF自定义字段中继器(Wordpress)

搜索页面上的 Wordpress ACF 中继器字段

WordPress ACF:为自定义帖子类型添加默认行到管理部分的中继器字段类型

Wordpress ACF 显示关系问题