问题描述
我不知道为什么,但我已经使用 get_posts()
查询一些数据。然后我使用 setup_postdata()
… 我认为它的使用,所以我可以使用像 the_permalink()
等功能与新的帖子数据?
<?php foreach ($childPosts as $cp) : setup_postdata($cp); ?>
<article <?php post_class() ?> id="post-<?php the_ID(); ?>">
<h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
<?php if (has_post_thumbnail()) : ?>
<a href="<?php the_permalink() ?>"><?php the_post_thumbnail(($hasOutputNotFeaturedDiv) ? 'thumb-small' : null) ?></a>
<?php endif; ?>
<?php the_excerpt(); ?>
<p class="more"><a href="<?php the_permalink() ?>">Read more ...</a></p>
<?php include (TEMPLATEPATH . '/inc/meta.php' ); ?>
</article>
<?php endforeach; ?>
但似乎只有 the_excerpt
包含新的后期数据值,为什么呢?我发现如果我使用 echo get_the_permalink($cp)
它可以正常工作。但我认为较短的版本会更好
最佳解决方案
我可能是错的,但从我看到的,”setup_postdata()” 应该用于做一个自定义选择查询 (不只是 query_posts):http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query
同样,如果要使用”the_title()” 和”the_permalink()” 等标签与该自定义选择查询一起使用… 您需要在 setup_postdata() 中使用变量名称 (不是另一个变量名) – 至少应该调用 global $ post 在您的”foreach” 循环之前…
所以基本上遵循那个抄送链接的例子。并且不要更改变量名 $ post – 否则它会中断它。
HTH
次佳解决方案
更换
foreach ( $childPosts as $cp ) : setup_postdata( $cp );
同
foreach ( $childPosts as $post ) : setup_postdata( $post );
因此,您需要使用精确的 $post
变量以及 setup_postdata()
。
第三种解决方案
根据你在哪里使用 setup_postdata()(如果它不在主循环中,或者在函数/侧边栏小工具中),你可能还需要声明 –
global $post;
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。