ACF 中继器字段:对链接使用函数

Posted

技术标签:

【中文标题】ACF 中继器字段:对链接使用函数【英文标题】:ACF Repeater Field: Using Functions for Links 【发布时间】:2014-01-29 07:41:10 【问题描述】:

我正在为具有链接的块使用高级自定义 Fieds 中继器字段插件。但是,每个块都有两种类型的链接:外部链接或内部链接(这个链接指向另一个 Wordpress 页面)。

我正在尝试编写一个调用其中一个或另一个的函数,具体取决于 UI 中的字段是否为空。

我写的那个不工作,我想知道我是否正在使用它写。

这是我写的函数。

    function mediaLink()
    if (the_sub_field('block_int_link') == false) 
     echo the_sub_field('block_ext_link');
    

这是在 html 中使用的。

<a href="<?php echo mediaLink();?>">
<div class="<?php echo $media_class;?>" style="background-image:url('<?php echo $image[0];?>');">
<p><span id="headtitle"><?php echo the_sub_field('block_headline');?></span><br/><?php echo the_sub_field('block_description');?></p>
</div>
</a>

我将内部链接设置为允许 Null。

【问题讨论】:

【参考方案1】:

the_sub_field 循环工作。您不能编写函数来检查子字段。 而且由于repeater返回值数组,你需要循环检查每个链接是空的还是填充的。

此处的 repeat_field_name 应替换为适当的 repeater_field slug 并且 ID 是一个 页面或帖子 ID,其中您已使用中继器字段来填充元数据。

例如:

$rep_field = get_field('repeat_field_name','ID');
if( !empty($rep_field) && count($rep_field) > 0 ) 
   foreach( $rep_field as $r ) 
      if( $r['block_int_link'] == false ) 
        //echo $r['block_ext_link'];
        echo '<a href="'.$r['block_ext_link].'"></a>';
      
   

【讨论】:

很抱歉,我无法理解 ID 是什么。我正在使用的模块的字段名称是“media_block”,所以我知道了,但我不太确定 ID。这个模块也是一个包含并且 get_field(media_block) 已经在主文件上使用过,所以我不确定这是否会有所不同。 ID 是页面 ID 或帖子 ID。

以上是关于ACF 中继器字段:对链接使用函数的主要内容,如果未能解决你的问题,请参考以下文章

插入计数器时 ACF 中继器字段未打开模式

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

ACF 中继器字段返回包含中继器计数的字符串

ACF 中继器字段仅显示一行

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

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