我正在迭代post ID数组$ids
. 除作者外,所有内容均正确显示。每个帖子都显示了相同的作者,尽管帖子由不同的作者撰写。我似乎无法解决这个问题。。。
<?php
$ids = array();
$bookid = get_post_meta(get_the_ID(), \'prefered_book\', true );
$args = array(
\'post_type\' => \'post\',
\'post__not_in\' => array($post->ID),
\'tax_query\' => array(
array(
\'taxonomy\' => \'books\',
\'field\' => \'id\',
\'terms\' => "$bookid",
)
)
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post();
$ids[]= $post->ID;
endwhile;
}
?>
<?php
$bookdesc = get_term( $bookid , \'books\');
if(count($ids)) : ?>
<h5>Post about <?php echo $bookdesc->description; ?></h5>
<ul>
<?php foreach($ids as $id) : ?>
<li>
<a href="<?php echo get_permalink( $id ); ?>">
<div class="Wrap">
<?php $img = wp_get_attachment_url( get_post_thumbnail_id($id,\'size-200\') ); ?>
<?php if ($img) : ?>
<img class="smallImage" src="<?php echo $img ?>" />
<?php endif; ?>
<h3><?php echo get_the_title($id); ?></h3>
<h6>By <?php the_author($id);
// Here it fails, incorrectly showing same author for every post
?></h6>
</div>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
最合适的回答,由SO网友:s_ha_dum 整理而成
您需要将大部分代码正确地移动到循环中。本部分:
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post();
$ids[]= $post->ID;
endwhile;
}
何时
the_post()
执行时,它填充
$post
许多模板函数所依赖的全局函数。问题是您正在运行
foreach
循环,但不重置该全局。
你可以使用setup_postdata()
在里面foreach
但我不明白这有什么意义。看起来您可以在第一个循环中完成整个操作。