WordPress: помощь в получении правильных комментариев для отображения в одном сообщении

#wordpress #wordpress-theming #blogs #custom-theme

#wordpress #wordpress-тематизация #Блоги #пользовательская тема

Вопрос:

Я создаю пользовательскую тему WordPress, и в любом отдельном сообщении отображаются ВСЕ комментарии, а не только комментарии к этому сообщению. Очевидно, я хочу отобразить только комментарии, сделанные в этом сообщении.

 <?php

//Get only the approved comments
$args = array(
    'status' => 'approve'
);

// The comment Query
$comments_query = new WP_Comment_Query;
$comments = $comments_query->query( $args );
 
// Comment Loop
if ( $comments ) {
  
  echo '<ol class="post-comments">';
  
  foreach ( $comments as $comment ) {
  
?>
 
 <li class="post-comment">
 
   <div class="comment-avatar">
     <div><?php echo get_avatar( $comment, 32 ); ?></div>
   </div>
   
  <div class="comment-content">
    <div class="comment-meta">
      <p class="comment-author"><?php echo $comment->comment_author; ?></p> 
      <p class="comment-date"> <?php echo $comment->comment_date; ?></p>
    </div> 
    <p class="comment-text"><?php echo $comment->comment_content; ?></p> 
  </div>
  
 </li>
 
 <?php
  }
    echo '</ol>';
} else {
 echo 'No comments found.';
}
?>
  

По сути, я использую этот код, который я получил непосредственно из wordpress.org

  <?php 
$args = array( 
    // args here 
); 
 
// The Query 
 
$comments_query = new WP_Comment_Query( $args ); 
$comments = $comments_query->comments;
 
// Comment Loop 
 
if ( $comments ) { 
    foreach ( $comments as $comment ) { 
        echo $comment->comment_content;
    }
} else {
    echo 'No comments found.';
}
?>

  

Ответ №1:

Чтобы показывать комментарии только для определенного идентификатора записи, вы должны передать соответствующий идентификатор записи в post_id аргументе, например:

 $args = array(
    'post_id'=>YOUR_POST_ID_HERE
);
$comments_query = new WP_Comment_Query( $args ); 
$comments = $comments_query->comments;
  

Вы можете найти список соответствующих аргументов, которые могут быть переданы конструктору WP_Comment_Query здесь :
WP docs

Комментарии:

1. это имеет смысл, но как мне динамически заполнять идентификатор? Кажется, я не могу найти ответ на этот вопрос, и примеры, которые я нахожу, имеют жестко закодированные идентификаторы. Я снова проверю документы, но я уже несколько раз просматривал

2. Внутри цикла вы могли бы сделать что-то вроде get_the_ID();

Ответ №2:

Это был ответ. @SessionCookieMonster был прав, сказав, что должен добавить post_id в массив args и что я должен использовать get_the_ID() , однако мне не нужно было использовать это внутри цикла, а просто присвоить ему значение для post_id

 $args = array(
    'status' => 'approve',
    'post_id'=> get_the_ID()
);

$comments_query = new WP_Comment_Query;
$comments = $comments_query->query( $args );