在循环中获取评论和帖子

时间:2013-09-21 作者:user2745423

我需要让特定用户完成帖子,还需要对这些帖子进行评论,到目前为止,我可以获得帖子和评论,但无法获得如何在循环中正确完成,因为现在,无论每个帖子实际属于哪个帖子,我都会为每个帖子显示相同的评论。。。

下面是代码。。。在另一个循环中,我现在很确定这是应该的方式。。。

所以在我的例子中的输出是:帖子列表+每个帖子都会得到所有曾经做过的评论。。。

我想在一个循环中只获取帖子+它的评论(我将只放置php)

        <?php $posts = get_recent_posts_by_author_role(\'tenant\');
                        foreach($posts as $post) {
                            $title=$post->post_title;
                            $perma_link=get_permalink($post->ID);
                            $img_post=get_the_post_thumbnail($post->ID);
                            $author_name=$post->post_author;
                            $content_post=$post->post_content;
                            $date=$post->post_date;
                            $content_style="comment_text"; 

                        ?>

<?php $comment=get_comments($post->ID);
                                foreach($comment as $com){

                                    $com_author=$com->comment_author;
                                    $com_date=$com->comment_date;
                                    $com_content=$com->comment_content;
                                    global $authordata;
                                    $author_roles=$authordata->roles;
                                    ?>

<?php  }?>
<?php  }?>

2 个回复
最合适的回答,由SO网友:gmazzap 整理而成

get_comments 接受一个参数数组,则传递一个整数。

如果要检索所有评论以供发布使用,请执行以下操作:

get_comments( array(\'post_id\' => $post->ID, \'status\' => \'approve\') );
要获取已格式化的注释列表,使用wp_list_comments() 函数,而不是另一个foreach循环(代码来自codex):

  echo \'<ol class="commentlist">\';
  //Gather comments for a specific page/post 
  $comments = get_comments(array(
    \'post_id\' => $post->ID,
     \'status\' => \'approve\'
  ));
  wp_list_comments(array(
    \'per_page\' => 10, // Allow comment pagination
     \'reverse_top_level\' => false //Show the latest comments at the top of the list
   ), $comments);
  echo \'</ol>\';

SO网友:Singgih Hadi Saputra

get\\u comments接受一个参数数组,则传递一个整数。

如果要检索所有评论以供发布使用,请执行以下操作:

get_comments( array(\'post_id\' => $post->ID, \'status\' => \'approve\') );
To get an already formatted comment list, is easier use the wp_list_comments() function, instead of another foreach cycle (code from codex):

  echo \'<ol class="commentlist">\';
  //Gather comments for a specific page/post 
  $comments = get_comments(array(
    \'post_id\' => $post->ID,
     \'status\' => \'approve\'
  ));
  wp_list_comments(array(
    \'per_page\' => 10, // Allow comment pagination
     \'reverse_top_level\' => false //Show the latest comments at the top of the list
   ), $comments);
  echo \'</ol>\';

结束