web-dev-qa-db-ja.com

WP_Query()とカスタムループを使用して投稿IDの投稿コメントを取得する

モデレータのメモ: 元のタイトルは「WP-Query()を使用してカスタムループで投稿IDで投稿コメントを取得する方法はありますか?)

こんにちは!私は home.php ページの特定のカテゴリからの投稿を1つだけ表示するカスタムループ WP_Query を使用しています。

<?php $pr_q = "cat=11&posts_per_page=1"; $pregunta_q = new WP_Query($pr_q); ?>
<?php while ($pregunta_q->have_posts()) : $pregunta_q->the_post(); ?>
    <!-- post stuff here -->
<?php endwhile; ?>

その特定の投稿に対するコメントを表示させる方法はありますか?私はループの中にコメントテンプレートを含めようとしましたが何もしませんでした。 home.phpの中や他の場所で使用できる特定の投稿に対するコメントをロードする関数はありますか?

6
Rodrigo

ループ内でコメントテンプレートを使用できるようにするには、以下を追加します。

global $withcomments; $withcomments = true;
4
sorich87

デフォルトでは、WP_QueryはあなたがコメントをWITH THE QUERYでロードするだけです。

  1. コメントフィードを見る、または
  2. singular項目を見てください。

カテゴリリストとしては(たとえ1つしかないとしても)、「単数形」とは見なされないため、クエリにコメントが自動的に取り込まれることはありません。幸い、これを回避する方法があります。基本的に、コメントテンプレートを取り込む前に、コメントを取得して、使用しているクエリオブジェクトに追加する必要があります。

<?php $pr_q = "cat=11&posts_per_page=1"; $pregunta_q = new WP_Query($pr_q); ?>
<?php while ($pregunta_q->have_posts()) : $pregunta_q->the_post(); ?>
  <!-- post stuff before comments here -->
  $comments = get_comments( array(
    'post_id' => $post->ID,
    'orderby' => 'comment_date_gmt',
    'status' => 'approve',
  ) );
  if(!empty($comments)){
    $pregunta_q->comments = $comments;
    $pregunta_q->comment_count = count($comments);
  }
  <!-- comment stuff here -->
<?php endwhile; ?>
1
John P Bloch

John P Blochの答えは正しいです。あなたが単数形の&コメントフィードにある場合にのみ、コメントがロードされます。幸い、WP Queryにパラメータを追加することでこの動作をオーバーライドできます。

'withcomments' => 1, 'feed' => 1

0
Jeg Bagus