Функция get_comments() в WordPress: примеры использования, аргументы, возвращаемые значения.

# Функция 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 );
}

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *