#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 );