get_comments() — это мощная функция WordPress, которая позволяет получать список комментариев по определённым параметрам. Эта функция может возвращать как массив комментариев, так и количество комментариев, если указать соответствующие параметры.
Функция get_comments() возвращает список комментариев, которые могут относиться к отдельной записи (посту) или ко всему блогу. Функция поддерживает множество аргументов, позволяющих фильтровать комментарии по различным критериям, таким как автор, дата, статус и многое другое.
get_comments( string|array $args = '' ): WP_Comment[]|int[]|int
Параметры $args для функции get_comments()
author_email(string) — Email автора комментария.author__in(array) — Массив ID авторов, комментарии которых нужно получить.author__not_in(array) — Массив ID авторов, комментарии которых нужно исключить.comment__in(array) — Массив ID комментариев, которые нужно получить.comment__not_in(array) — Массив ID комментариев, которые нужно исключить.count(bool) — Еслиtrue, вернёт количество комментариев, а не сами комментарии.include_unapproved(array) — Массив email или ID пользователей, чьи неутверждённые комментарии будут включены.karma(int) — Получить комментарии с определённым числом кармы.parent(int) — ID комментария, чьи дочерние комментарии нужно получить.parent__in(array) — Массив ID комментариев, чьи дочерние комментарии нужно получить.parent__not_in(array) — Массив ID комментариев, чьи дочерние комментарии нужно исключить.post_author(int) — ID автора записи, чьи комментарии нужно получить.post_author__in(array) — Массив ID авторов записей, чьи комментарии нужно получить.post_author__not_in(array) — Массив ID авторов записей, чьи комментарии нужно исключить.post_id(int) — ID записи, чьи комментарии нужно получить.post__in(array) — Массив ID записей, чьи комментарии нужно получить.post__not_in(array) — Массив ID записей, чьи комментарии нужно исключить.post_status(string) — Статус записи для фильтрации комментариев (например,'publish').post_type(string) — Тип записи для фильтрации комментариев (например,'page').post_name(string) — Ярлык записи для фильтрации комментариев.post_parent(int) — ID родительской записи для фильтрации дочерних записей.search(string) — Поисковый запрос по содержимому комментариев.status(string) — Статус комментариев (например,'approve','hold','spam').orderby(string|array) — Поле для сортировки комментариев. Возможные значения включают поля из таблицы комментариев или метаполя.order(string) — Порядок сортировки:'ASC'или'DESC'.number(int) — Максимальное количество комментариев, которое нужно получить.offset(int) — Смещение, которое нужно применить при запросе комментариев (для пагинации).no_found_rows(bool) — Отключает подсчёт общего количества комментариев (ускоряет запросы).meta_key(string) — Ключ метаполя для фильтрации комментариев.meta_value(string) — Значение метаполя для фильтрации комментариев (требуетmeta_key).meta_query(array) — Массив для сложных запросов по метаданным (аналогmeta_queryвWP_Query).date_query(array) — Фильтр по дате комментариев (использует WP_Date_Query).fields(string) — Поля, которые должны быть возвращены (например,'ids'для ID комментариев).type(string|array) — Тип комментариев, который нужно получить (например,'comment'или'pingback').type__in(array) — Массив типов комментариев, которые нужно получить.type__not_in(array) — Массив типов комментариев, которые нужно исключить.user_id(int) — ID пользователя, чьи комментарии нужно получить.hierarchical(string|bool) — Возвращать ли вложенные комментарии в виде иерархии. Может быть'threaded','flat', илиfalse.update_comment_meta_cache(bool) — Нужно ли обновить мета-кэш комментариев.update_comment_post_cache(bool) — Нужно ли обновить мета-кэш записей, к которым относятся комментарии.
Возвращаемое значение
- WP_Comment[]: Массив объектов
WP_Comment, содержащих данные о комментариях. - int[]: Массив идентификаторов комментариев, если в аргументах указано, что необходимо возвращать только ID.
- int: Количество комментариев, если передан аргумент
count => true.
Пример 1: Получение количества комментариев для записи
Этот пример показывает, как можно получить количество комментариев для конкретной записи с помощью параметра count.
$args = array(
'post_id' => 1, // ID записи, для которой нужно получить комментарии
'count' => true // Возвращает только количество комментариев
);
$comments_count = get_comments( $args );
echo $comments_count;
Пример 2: Получение комментариев за последние 4 недели
В этом примере используются параметры запроса по дате, чтобы получить комментарии, оставленные за последние 4 недели.
$args = array(
'date_query' => array(
'after' => '4 weeks ago',
'before' => 'tomorrow',
'inclusive' => true,
),
);
$comments = get_comments( $args );
foreach ( $comments as $comment ) {
echo $comment->comment_author . '<br />' . $comment->comment_content;
}
Пример 3: Получение комментариев для конкретной записи
Этот пример показывает, как можно получить все комментарии для записи с ID 15.
$comments = get_comments( array( 'post_id' => 15 ) );
foreach ( $comments as $comment ) {
echo $comment->comment_author . '<br />' . $comment->comment_content;
}
Пример 4: Получение последних 5 неподтверждённых комментариев
Этот пример показывает, как получить последние 5 неподтверждённых комментариев для записи с ID 1.
$args = array(
'status' => 'hold', // Статус комментария - неподтверждённые
'number' => 5, // Количество комментариев для возврата
'post_id' => 1, // ID записи
);
$comments = get_comments( $args );
foreach ( $comments as $comment ) {
echo $comment->comment_author . '<br />' . $comment->comment_content;
}
Пример 5: Получение комментариев пользователя
Этот пример демонстрирует, как получить комментарии, оставленные пользователем с ID 1.
$args = array(
'user_id' => 1, // ID пользователя
);
$comments = get_comments( $args );
foreach ( $comments as $comment ) {
echo $comment->comment_author . '<br />' . $comment->comment_content;
}
Заключение
Функция get_comments() предоставляет гибкий способ получения комментариев в WordPress, позволяя фильтровать их по множеству критериев. Важно правильно использовать параметры для повышения производительности и точности результатов, особенно при работе с большими наборами данных.