我遇到了一个问题,这很烦人。 问题是我的页脚中有两个循环,它们从两个不同的类别中加载了3个最后的帖子。它看起来像是:
<?php $posts = get_posts('category=21&orderby=desc&numberposts=3'); foreach($posts as $post) { ?>
<div class="footer-text-block">
<a href="<?php the_permalink() ?>" target="_parent">
<span class="footer-white-bold"><?php the_title(); ?></span>
</a><br />
<span class="footer-grey-thick"><?php the_excerpt(); ?></span>
</div>
<?php } ?>
<?php $posts = get_posts('category=22&orderby=desc&numberposts=3');
foreach($posts as $post) { ?>
<div class="footer-text-block">
<a href="<?php the_permalink() ?>" target="_parent">
<span class="footer-white-bold"><?php the_title(); ?></span>
</a><br />
<span class="footer-grey-thick"><?php the_excerpt(); ?></span>
</div>
<?php } ?>
它输出的是: http://i.stack.imgur.com/5C58t.png
这是显示页脚的帖子的内容: http://i.stack.imgur.com/R6ok7.png
你知道为什么会发生这种事吗?
答案 0 :(得分:1)
这里有几个问题
您需要在每个自定义查询后重置您的postdata,即 {/ 1}}的每个实例之后。您可以在get_posts()
循环
wp_reset_postdata();
您有几个foreach
循环使用相同的foreach
值。您必须记住,最后一个值存在于外部您的$post
循环中,如果它没有被销毁,它将影响下一个foreach
循环中的值,如果它具有一样的名字。您可以将值重命名为每个foreach
循环的唯一值,也可以在foreach
循环之后/之外使用unset($post)
。
您需要先设置postdata,然后才能使用foreach
或the_excerpt()
等模板标记。只需在开始the_title()
循环
setup_postdata($post);
即可
答案 1 :(得分:0)
尝试使用setup_postdata($ post);使所有与事后相关的数据可用。你需要:
foreach($posts as $post) {
setup_postdata($post);
// the rest of your code
}