通过自定义字段和正则表达式输出的内部 link 不起作用

Internal link outputted via custom field and regex not working

我在做什么:
我通过获取标题来输出导航,运行通过正则表达式将其输入,并将其放入 a href。然后我使用一个函数,允许您传递要调用的特定行,获取该行的标题,运行 通过正则表达式并将其输出为 ID[=37 部分=]

我的问题:
出于某种原因,在执行此操作时,所有内部锚点仅转到第一项。如果我用一些通用的东西(#section-1)硬编码 anchorsids 然后它就可以工作了。显然我已经检查了控制台,它们确实匹配。

我对此感到有点震惊,因为它为什么不起作用是没有道理的。它只是将内部 link 与页面上项目的 ID 进行匹配(我已经完成了)。 DOM 是否因为加载时不同步而没有记录输出值?

我是如何输出内部导航的

<?php
  $product_counter = 1;
  if( have_rows('product_navigation') ): while( have_rows('product_navigation') ): the_row();
  $link = get_sub_field('product_name');
  $link = preg_replace('/[\s-]+/', '-', $link);
  $link = strtolower($link);
?>

<li id="<?php echo $link; ?>" class="animated fade-in-up">
    <a href="<?php echo '#' . $link; ?>">
         <!-- link stuff inside here -->
    </a>
</li>

<?php
  $product_counter++;
  endwhile; endif;
?>

我用于页面各部分的功能。

<?php
  function call_section_row($row_int) {
    $rows = get_field('product_navigation');
    $row_number = $rows[$row_int];
    $link = $row_number['product_name'];

    $link = preg_replace('/[\s-]+/', '-', $link);
    $link = strtolower($link);

    echo $link;
  }
?>

我如何为每个部分输出包含内部link的函数

<section id="<?php call_section_row(1); ?>" class="portfolio-planning">
   <!-- section stuff inside here -->
</section>

从导航中删除 <?php echo $link; ?> 在导航 li id