You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改ACF自定义函数以跨页面获取重复器字段的值?

修改ACF区块字段获取函数以支持重复器字段

原函数仅能获取单个字段,且找到第一个匹配区块后就停止遍历。要支持重复器字段,我们可以调整逻辑,让函数既能返回重复器的数组数据,也保留对普通字段的支持,还能选择返回第一个匹配区块或所有匹配区块的内容:

function get_field_from_block( $selector, $post_id, $block_name, $return_all = false ) {
    if ( ! has_blocks( $post_id ) ) {
        return false;
    }

    $post_blocks = parse_blocks( get_the_content( '', false, $post_id ) );
    $results = [];

    foreach ( $post_blocks as $block ) {
        // 匹配目标ACF区块
        if ( isset( $block['blockName'] ) && $block['blockName'] === $block_name ) {
            // 检查目标字段是否存在
            if ( isset( $block['attrs']['data'][$selector] ) ) {
                $field_value = $block['attrs']['data'][$selector];
                // 不需要返回所有的话,直接返回第一个匹配值
                if ( !$return_all ) {
                    return $field_value;
                }
                // 需要返回所有的话,存入结果数组
                $results[] = $field_value;
            }
            // 不再强制中断,继续检查后续同类型区块
        }
    }

    // 请求返回所有则返回结果数组,否则返回false(未找到匹配)
    return $return_all ? $results : false;
}

调用示例

1. 获取普通单个字段(与原用法一致)

$ticker = get_field_from_block('coin_ban_ticker', $post->ID, 'acf/coin-banner');

2. 获取单个区块的重复器字段

假设重复器字段名为coin_list,子字段包含coin_name和coin_price:

$coin_repeater = get_field_from_block('coin_list', $post->ID, 'acf/coin-banner');

// 遍历重复器数据
if ( $coin_repeater && is_array($coin_repeater) ) {
    foreach ( $coin_repeater as $item ) {
        echo '币种:' . $item['coin_name'] . ',价格:' . $item['coin_price'] . '<br>';
    }
}

3. 获取所有匹配区块的重复器字段

如果页面存在多个同类型ACF区块,想要获取所有区块的重复器数据,开启$return_all参数:

$all_coin_repeaters = get_field_from_block('coin_list', $post->ID, 'acf/coin-banner', true);

if ( $all_coin_repeaters ) {
    foreach ( $all_coin_repeaters as $repeater ) {
        foreach ( $repeater as $item ) {
            echo '币种:' . $item['coin_name'] . ',价格:' . $item['coin_price'] . '<br>';
        }
    }
}

内容的提问来源于stack exchange,提问作者Katharine Kulikova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 15:55:33