循环似乎停留在单个(现已删除)帖子上

时间:2016-02-01 作者:frollo

起初我认为这是一个ACF问题,但打印一些值帮助我发现,我的循环似乎卡在了一篇文章上,但只有在涉及某些字段时。

总结一下我的设置:我安装了高级自定义字段插件,并定义了一些自定义字段(主要是数字字段),在这些字段上我构建了自定义的帖子类型。

当我为自定义帖子类型开发归档页面时,出现了第一个问题:我让所有内容都正常工作,但有几个字段始终返回相同的值,这些值与特定帖子(帖子编号50)相关。在尝试修复代码(导致this question) 我把归档页放在后面,开始处理单个页面。然后,大多数字段工作正常,但有几个字段(归档页面中的少数字段)始终返回相同的值(第50篇文章中的值)。所以我开始打印帖子ID,每次我打电话get_the_ID() 我总是得到50分,即使在我删除了这篇文章之后,为了摆脱它的价值观,这是一次毫无意义的尝试。

我觉得这有点奇怪,但从行为上看,我可以说,不管我在哪里称呼它,这个循环不知何故被卡在了同一个帖子上。

2 个回复
最合适的回答,由SO网友:frollo 整理而成

我明白了!对于将来出现相同问题的任何人:

ACF的get_field_object() 显然,我做了一个WP\\u查询,之后就不会清理了,因为我为每一篇文章都调用了它,所以在精化过程中的某一点之后,我总是得到同一篇文章。我找到了解决办法question.

为清晰起见,一些代码:

<?php while ( $query->have_posts() ) : $query->the_post();?>
 <h1><?php the_title();?></h1>
 //Some more prints
 <?php $field = get_field_object(\'my_field\');
   $value = intval($field["value"]);
   $label = $field["choices"][$value];
   echo $label;
  //From this point on every custom field or other data came from the same post
 ?>
可能有更好的方法来解决这个问题,但它很简单,而且效果很好:

<?php while ( $query->have_posts() ) : $query->the_post();?>
 <h1><?php the_title();?></h1>
 //Some more prints
 <?php 
   $backup = $post; //Backing up the current post
   $field = get_field_object(\'my_field\');
   $value = intval($field["value"]);
   $label = $field["choices"][$value];
   echo $label;
   $post = $backup; //Restoring the post
 ?>

SO网友:david_nash

您是否尝试过使用wp_reset_query() 在循环之前。

相关推荐

WordPress Custom Post Loop

我正在尝试循环浏览自定义WordPress帖子,遇到了一个问题,比如我添加了自定义字段并想在中显示它<li> 使用循环。我成功地完成了操作,但数据/链接/类别正在重复,如果类别与以下内容相同,我希望只显示一次:如果我有2篇带有data1类别的帖子,那么链接将只显示data1once 但我有2个不同类别的帖子,然后它会分别显示每个帖子。Sample Code:<ul class="filter filter-top"> <li cla