当有多个作者时,循环中的帖子都显示相同的作者

时间:2014-02-03 作者:psot

我正在迭代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; ?>

1 个回复
最合适的回答,由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 但我不明白这有什么意义。看起来您可以在第一个循环中完成整个操作。

结束

相关推荐

如何检查“If Author”评论

我想在网站管理员/帖子作者的评论中添加额外的标记。是否对此进行检查,以及如何将其添加到下面的代码中?基本上,如果评论来自帖子作者,我想在他们的名字(作者或管理员)旁边添加HTML。谢谢 <div class=\"comment-meta commentmetadata \"> <?php printf(__(\'<cite class=\"fn\">%s</cite> <span