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();
,页脚链接将显示,但在此if
breaks 页脚链接中添加灵活的内容。
您需要在到达页脚之前关闭此 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 循环在循环时中断页脚的主要内容,如果未能解决你的问题,请参考以下文章