# Функция get_comments() в WordPress
Функция get_comments() позволяет получить список комментариев. Комментарии могут быть как для всего блога, так и для конкретного поста.
## Возвращаемые значения
Функция возвращает массив объектов типа WP_Comment, массив идентификаторов комментариев или количество найденных комментариев, если аргумент $count установлен в true.
## Использование
Для получения комментариев используйте следующую конструкцию:
```php
get_comments( $args );
Аргументы
- $args (string|array): Массив или строка с аргументами. Подробную информацию о допустимых аргументах можно найти в документе классов
WP_Comment_Query. По умолчанию — пустая строка.
Примеры
Пример 1: Получение всех комментариев к посту
$comments = get_comments( 'post_id=15' );
foreach( $comments as $comment ){
echo( $comment->comment_author );
}
Этот код выведет всех авторов комментариев к посту с ID 15 (включая спам и неутвержденные).
Пример 2: Показ 5 неутвержденных комментариев
$comments = get_comments( [
'status' => 'hold',
'number' => '5',
'post_id' => 1, // правильный идентификатор поста
] );
foreach( $comments as $comment ){
echo $comment->comment_author . '
' . $comment->comment_content;
}
Этот код покажет 5 неутвержденных комментариев к посту с ID 1.
Пример 3: Количество комментариев к посту
$comments = get_comments( [
'post_id' => 1, // используйте post_id, а не post_ID
'count' => true // возвращает только количество
] );
echo $comments;
Этот код выведет количество комментариев к посту с ID 1.
Пример 4: Количество комментариев пользователя
$args = array(
'user_id' => 1,
'count' => true
);
$comments = get_comments( $args );
echo $comments;
Этот код покажет количество комментариев пользователя с ID 1.
Пример 5: Получение комментариев пользователя
$args = array(
'user_id' => 1, // ID пользователя
);
$comments = get_comments( $args );
foreach( $comments as $comment ){
echo $comment->comment_author . '
' . $comment->comment_content;
}
Этот код отображает комментарии пользователя.
Пример 6: Удаление дубликатов комментариев
Этот код находит и удаляет одинаковые комментарии, сравнивая автора и текст комментария.
$all_comments = get_comments( [
'status' => 'approve',
'number' => '',
] );
$comment_ids_to_delete = [];
foreach( $all_comments as $k => $c ){
$kk = $k - 1; // индекс предыдущего комментария
$pc = $all_comments[ $kk ]; // предыдущий объект комментария
// Если автор и содержимое совпадают, добавляем комментарий в массив на удаление
if(
$pc->comment_author === $c->comment_author &&
$pc->comment_content === $c->comment_content
){
$comment_ids_to_delete[] = $pc->comment_ID;
}
}
// Удаляем комментарии по ID
foreach( $comment_ids_to_delete as $comm_id ){
wp_delete_comment( $comm_id );
}
Пример 7: Получение последних комментариев в списке
Этот код получает последние 10 комментариев и выводит их в виде списка.
$args = array(
'number' => 10,
'orderby' => 'comment_date',
'order' => 'DESC',
);
if( $comments = get_comments( $args ) ){
echo '';
foreach( $comments as $comment ){
$comm_link = get_comment_link( $comment->comment_ID ); // ссылка на комментарий
$comm_short_txt = mb_substr( strip_tags( $comment->comment_content ), 0, 50 ) .'...';
echo '- '. $comment->comment_author .': '. $comm_short_txt .'
';
}
echo '
';
}
Пример 8: Получение дочерних комментариев в виде дерева
Вот пример работы параметра 'hierarchical' => 'threaded':
$comments = get_comments( [
'parent' => 22384,
'hierarchical' => 'threaded',
] );
Изменения
Функция get_comments() была введена в версии 2.7.0 и доступна в текущей версии WordPress 6.7.2.
Исходный код функции
function get_comments( $args = '' ) {
$query = new WP_Comment_Query();
return $query->query( $args );
}