Функция get_comment(): Описание, примеры использования, хуки

## Функция get_comment()

Функция get_comment() позволяет получать данные о комментарии по его ID или объекту комментария. 

### Основные особенности

- Если вы передаете объект комментария, его данные будут кэшироваться и возвращаться после применения фильтра.
- Если комментарий пустой, то будет использоваться глобальная переменная комментария, если она установлена.

### Использование

- **Функции:** WP_Comment(), WP_Comment::get_instance()
- **Используется в:** get_comment_text(), get_comment_author()
- **Производительность:** 
  - 1 вызов — 0.000436 сек (быстро)
  - 50000 вызовов — 0.38 сек (очень быстро)

### Хуки

Функция использует хук get_comment, который позволяет добавлять свои изменения в процессе получения комментария.

### Возврат

Функция возвращает объект WP_Comment, массив или null, в зави��имости от указанного параметра $output.

### Синтаксис

```php
get_comment( $comment, $output );
  • $comment — это ID комментария, объект WP_Comment или строка с его идентификатором (по умолчанию null).
  • $output — тип возвращаемых данных: OBJECT, ARRAY_A (ассоциативный массив) или ARRAY_N (индексированный массив) (по умолчанию OBJECT).

Примеры

Пример 1: Получение комментария по ID

$comm_id = 11612;
$comm = get_comment( $comm_id ); 

print_r( $comm );

Результатом выполнения будет объект WP_Comment, содержащий данные о комментарии:

WP_Comment Object
(
    [comment_ID] => 11612
    [comment_post_ID] => 3477
    [comment_author] => Mseo
    [comment_author_email] => [email protected]
    [comment_author_url] => http://maeo.com
    [comment_author_IP] => 95.79.52.2
    [comment_date] => 2015-09-01 16:28:33
    [comment_date_gmt] => 2015-09-01 11:28:33
    [comment_content] => Привет, код для вывода даты комментария
    [comment_karma] => 0
    [comment_approved] => 1
    [comment_agent] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ...
    [comment_type] => comment
    [comment_parent] => 0
    [user_id] => 0
    // Другие защищенные поля
)

Пример 2: Получение имени автора комментария

$comm_id = 27;
$comment = get_comment( $comm_id );
$name = esc_html( $comment->comment_author);

Здесь мы получаем имя автора комментария с ID 27 и обрабатываем его для безопасного отображения.

Пример 3: Получение данных в виде ассоциативного массива

$comm_id = 27;
$comment = get_comment( $comm_id, ARRAY_A );
$comment_author_name = esc_html( $comment['comment_author']);

В этом примере мы получаем данные комментария как ассоциативный массив, чтобы удобно работать с ними.

Примечания

  • global $comment; используется для получения глобального объекта комментария, если он доступен.

Изменения

Функция была добавлена в версии 2.0.0 WordPress.

Код функции get_comment

function get_comment( $comment = null, $output = OBJECT ) {
    if ( empty( $comment ) && isset( $GLOBALS['comment'] ) ) {
        $comment = $GLOBALS['comment'];
    }

    if ( $comment instanceof WP_Comment ) {
        $_comment = $comment;
    } elseif ( is_object( $comment ) ) {
        $_comment = new WP_Comment( $comment );
    } else {
        $_comment = WP_Comment::get_instance( $comment );
    }

    if ( ! $_comment ) {
        return null;
    }

    /**
     * Срабатывает после получения комментария.
     * 
     * @since 2.3.0
     * @param WP_Comment $_comment Данные о комментарии.
     */
    $_comment = apply_filters( 'get_comment', $_comment );

    if ( OBJECT === $output ) {
        return $_comment;
    } elseif ( ARRAY_A === $output ) {
        return $_comment->to_array();
    } elseif ( ARRAY_N === $output ) {
        return array_values( $_comment->to_array() );
    }
    return $_comment;
}

Leave a Reply

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