我正在尝试在管理员上创建一个界面,允许我们的作者选择最重要的资源作为归档页面的一部分。我试图在存档页面上运行的原始查询之外添加一个循环。我有
设置带有转发器字段的页面在存档中引用此页面以获取转发器信息(通过将转发器命名为与分类法slug相同的名称并使用get_queried_object()->slug
.我在两个循环之间遇到了一些干扰:
archive.php:
//REPEATER LOOP
<?php
$slug = get_queried_object()->slug;
$posts = get_field($slug, 156053); //returns the post objects from the page with the repeaters
if( $posts ): ?>
<ul>
<?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) ?>
<?php setup_postdata($post); ?>
//post markup
<?php endforeach; ?>
</ul>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
//ORIGINAL ARCHIVE LOOP
<?php while (have_posts()) : the_post(); ?>
<?php get_template_part(\'templates/content\', get_post_format()); ?>
<?php endwhile; ?>
在这种情况下,第一个循环按预期工作,原始归档循环返回正确数量的帖子,但postdata来自原始循环。(即,第一个循环返回3个结果,第二个循环返回26个结果,但前3个结果与原始循环中的3个结果相同,其余为空)。
我发现更改中继器循环变量的$post
消除了与原始归档循环的冲突,但转发器循环会引入归档循环的第一个帖子(x3,转发器指定的帖子数量)
这件事真让我抓狂。非常感谢您的帮助!