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

ACF重复器增量计数器与reset_rows使用问题求助

修复ACF重复器循环计数器的问题

我一眼就看到了你代码里的两个关键问题,导致第二个循环的计数器一直显示为0:

问题1:第一个循环的计数器变量语法错误

你在第一个循环末尾写了project_counter++;,这里少了变量前缀$,PHP会把它当成未定义常量处理,导致计数器根本没正确递增(甚至可能触发警告)。

问题2:第二个循环的计数器初始化位置错误

你把$project_counter = 0;放在了while循环的内部,这意味着每次循环迭代都会把计数器重置为0,所以不管循环多少次,输出的永远是project-0。


修正后的完整代码

<?php if (have_rows('projects')) : 
    // 初始化第一个循环的计数器
    $project_counter = 0; 
?>
    <!-- 第一个循环:生成项目链接 -->
    <?php while (have_rows('projects')): the_row(); ?>
    <div>
        <a href="#project-<?php echo $project_counter; ?>" class="project-link">Link to project</a>
    </div>
    <?php $project_counter++; endwhile;?>

    <?php reset_rows();?>

    <!-- 第二个循环:生成项目内容块 -->
    <?php 
    // 重置计数器,这次要放在循环外面!
    $project_counter = 0; 
    while (have_rows('projects')): the_row(); ?>
    <div id="project-<?php echo $project_counter; ?>">
        <p>Project Content</p>
    </div>
    <?php $project_counter++; endwhile;?>
<?php endif;?>

关键修改点解释

  1. 第一个循环里把project_counter++;改成$project_counter++;,确保变量正确递增。
  2. 第二个循环的$project_counter = 0;移到了while循环外部,这样整个循环开始前计数器重置为0,每次迭代只执行递增操作,就能得到0、1、2的正确序列。
  3. 保留reset_rows()调用,确保第二个循环能重新遍历ACF重复器的所有行。

修改后就能实现你期望的渲染效果:链接的href和内容块的id一一对应,计数器从0开始正常递增。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:41:20