ACF 页面 while 循环在循环时中断页脚

Posted

技术标签:

【中文标题】ACF 页面 while 循环在循环时中断页脚【英文标题】:ACF page while loop breaks footer while loop 【发布时间】:2018-12-10 20:09:49 【问题描述】:

所以基本上我有一个主页和一个页脚页面。两者都是单独的 .php 文件。

我在这个网站上使用ACF。

按照文档,我在主页中为我的“灵活内容”创建了一个 while 循环,它可以工作,显示从 CMS 输入字段循环和挂钩的所有数据。

我的问题出在页脚,我有一个显示链接的 while 循环,但它不会显示 除非我从主页中删除 while 循环,然后链接显示在页脚中。

老实说,我知道为什么会发生这种情况,我已经测试了分配并对此有所了解,请帮助。

主页代码:

<?php

// check if the flexible content field has rows of data
if( have_rows('flexible_content_field_name') ):

    // loop through the rows of data
    while ( have_rows('flexible_content_field_name') ) : the_row();

        // check current row layout
        if( get_row_layout() == 'gallery' ):

            // check if the nested repeater field has rows of data
            if( have_rows('images') ):

                echo '<ul>';

                // loop through the rows of data
                while ( have_rows('images') ) : the_row();

                    $image = get_sub_field('image');

                    echo '<li><img src="' . $image['url'] . '"  /></li>';

                endwhile;

                echo '</ul>';

            endif;

        endif;

    endwhile;

else :

    // no layouts found

endif;

?>
<?php get_footer(); ?>

页脚代码:

<div class="links">

         <?php

            if( have_rows('footer_page_links', 'option') ): 
            var_dump("test");
            while( have_rows('footer_page_links', 'option') ): the_row();

            ?>

            <p><a href="<?php the_sub_field('footer_link');   ?>"><?php the_sub_field('footer_link_name'); ?></a></p>

        <?php endwhile; ?>
        <?php endif; ?>   


</div>
<?php wp_footer(); ?>

我只想添加,如果实现了主页面 while 循环,甚至不会在页脚中显示 vardump(),因此它永远不会进入页脚循环。页脚使用ACF选项页->LINK

页脚中的所有其他选项字段也会显示,如果它不在 while 循环内。我已经删除了主页面 while 循环,然后页脚 while 循环工作,这只发生在灵活的内容上,我的其他页面有循环,不包含灵活内容的完美工作。

【问题讨论】:

我对 ACF 选项页面不太熟悉,但这是我的猜测。在您的代码上方,在某些时候您开始页面循环(类似于: ) 如果没有,请添加, 然后在页脚之前关闭它。如果你有它,只需在页脚之前关闭它。 嗨@VictoriaRuiz,谢谢,你在说我的主页吗?我确实有它,而且我在调用页脚之前关闭了括号。只是不想添加我现在知道的代码与它为什么会中断无关。我部分删除部分并最终意识到上面的代码是它破坏的唯一原因。所以在主页中,如果它只是带有一些内容的if (have_posts()) while (have_posts()) the_post();,页脚链接将显示,但在此ifbreaks 页脚链接中添加灵活的内容。 您需要在到达页脚之前关闭此 if/while。如果这不起作用,总是有 wp_reset_query:developer.wordpress.org/reference/functions/wp_reset_query 感谢您尝试帮助@VictoriaRuiz,所以尝试wp_reset_query(); 不起作用.. 您建议在主页灵活内容循环之后添加它吗? 是的,在循环关闭之后。 【参考方案1】:

所以这个问题在我这边得到了解决,在联系了 ACF 人员后,他们复制了我所做的并且无法重现我的问题。

自从我拥有最新的 Wordpress(版本 4.9.7)以来,这让我开始思考,唯一的区别是托管。

我在 localhost 上使用的是 XAMP 版本 3.2.2,我认为这不是问题,但 确实是,所以升级到实时服务器,一切都按预期工作,所以对于未来参考您是否应该遇到这些简单的无法解释的代码错误,检查托管或升级。

【讨论】:

以上是关于ACF 页面 while 循环在循环时中断页脚的主要内容,如果未能解决你的问题,请参考以下文章

在 foreach 循环中获取 ACF 字段数据 - wordpress

如何在页面模板中将ACF关系帖子显示为循环

在while循环中从数组中删除重复的内容[重复]

PHP在用户断开连接时中止无限循环

动态添加的页脚不会停留在 ASP.NET 页面的底部

搜索页面功能的while循环内的Continue语句