get_comments

Получает комментарии по указанным параметрам, в виде массива данных.

Хуков нет.

Возвращает

Массив/число. Массив объектов комментариев:

$comments = get_comments( $args );
foreach( $comments as $comment ){
	// вывод
}

Шаблон использования

$args = array(
	'author_email'        => '',
	'author__in'          => '',
	'author__not_in'      => '',
	'include_unapproved'  => '',
	'fields'              => '',
	'comment__in'         => '',
	'comment__not_in'     => '',
	'karma'               => '',
	'number'              => '',
	'offset'              => '',
	'no_found_rows'       => true,
	'orderby'             => '',
	'order'               => 'DESC',
	'parent'              => '',
	'post_author__in'     => '',
	'post_author__not_in' => '',
	'post_id'             => 0,
	'post__in'            => '',
	'post__not_in'        => '',
	'post_author'         => '',
	'post_name'           => '',
	'post_parent'         => '',
	'post_status'         => '',
	'post_type'           => '',
	'status'              => 'all',
	'type'                => '',
	'type__in'            => '',
	'type__not_in'        => '',
	'user_id'             => '',
	'search'              => '',
	'count'               => false,
	'meta_key'            => '',
	'meta_value'          => '',
	'meta_query'          => '',
	'date_query'          => null, // See WP_Date_Query
	'hierarchical'        => false,
	'update_comment_meta_cache'  => true,
	'update_comment_post_cache'  => false,
);

if( $comments = get_comments( $args ) ){
	foreach( $comments as $comment ){
		// действия
	}
}

Аргументы параметра $args


  • user_id (число)


  • author__in (число/массив)


  • author__not_in (число/массив)


  • comment__in (массив/число)


  • comment__not_in (массив/число)


  • count (число)


  • include_unapproved (массив)


  • karma (число)


  • parent (число)


  • parent__in (массив)


  • parent__not_in (массив)


  • post_author (число)


  • post_author__in (число/массив)


  • post_author__not_in (число/массив)


  • post_id (число)


  • post__in (массив)


  • post__not_in (массив)


  • post_status (строка)


  • post_type (строка)


  • post_name (строка)


  • post_parent (число)


  • search (строка)


  • status (строка)


  • orderby (строка/массив)


  • order (строка)


  • number (число)


  • offset (число)


  • no_found_rows (логический)


  • meta_key (строка)


  • meta_value (строка)


  • meta_query (массив)


  • date_query (массив)


  • fields (строка)


  • type (строка/массив)


  • type__in (строка/массив)


  • type__not_in (строка/массив)


  • hierarchical (строка/логический)


  • update_comment_meta_cache (логический)


  • update_comment_post_cache (логический)

user_id(число)

Вернет только комментарии указанного пользователя. Аналог параметра author__in.

По умолчанию: нет
author_email (строка)

email автора комментария, комментарии которого нужно получить.
По умолчанию: ”

author__in(число/массив)
ID автора, комментарии которого нужно получить. Можно указать ID нескольких авторов в массиве. В запросе используется поле user_id.
По умолчанию: ”

author__not_in(число/массив)
ID автора, комментарии которого нужно исключить. Можно указать ID нескольких авторов в массиве. В запросе используется поле user_id.
По умолчанию: ”

comment__in(массив/число)
ID комментариев которые нужно получить.
По умолчанию: ”

comment__not_in(массив/число)
ID комментариев которые нужно исключить.
По умолчанию: ”

count(число)
Вернет значение, общее число комментариев.
По умолчанию: нет

include_unapproved(массив)
Массив ID или email пользователей, неодобренные комментарии которых будут включены в результат, неважно какой статус бы указан в параметре status.
По умолчанию: ”

karma(число)
Получить комментарии с указанным числом karma.
По умолчанию: ”

parent(число)
ID комментария, дочерние комментарии которого нужно получить. Т.е. указывается родительский ID.
По умолчанию: ”

parent__in(массив)
Массив ID комментариев, дочерние комментарии которых нужно получить.
По умолчанию: array()

parent__not_in(массив)
ID комментариев, дочерние комментарии которых НЕ нужно получать.
По умолчанию: array()

post_author(число)
ID автора записи, комментарии которых нужно получить. В запросе используется поле post_author из таблицы записей wp_posts.
По умолчанию: ”

post_author__in(число/массив)
ID авторов записей, комментарии которых нужно получить. Можно указать ID нескольких авторов в массиве.

post_author__not_in(число/массив)
ID авторов записей, комментарии которых НЕ нужно получать. Можно указать ID нескольких авторов в массиве.
По умолчанию: ”

post_id(число)
ID поста/страницы. Если указать этот параметр, то функция вернет только комментарии к указанному посту или странице.
По умолчанию: ”

post__in(массив)
ID записей, комментарии которых нужно получить.
По умолчанию: ”

post__not_in(массив)
ID записей, комментарии которых нужно исключить.
По умолчанию: ”

post_status(строка)
Статус записи. Будут получены комментарии записей имеющих этот статус. Например publish.
По умолчанию: ”

post_type(строка)
Тип записи. Будут получены комментарии записей имеющих этот тип. Например page.
По умолчанию: ”

post_name(строка)
Название записи (ярлык записи), комментарии которой нужно получить.
По умолчанию: ”

post_parent(число)
ID записи, комментарии дочерних записей которой нужно получить.
По умолчанию: ”

search(строка)
Условия поиска, по которому будут получены комментарии.
По умолчанию: ”

status(строка)

Вернет комментарии с этим статусом. Может принимать параметры:

  • hold – не одобренные комменты
  • approve – одобренные комменты
  • spam – спам
  • trash – корзина
  • post-trashed – комментарии записей из корзины

По умолчанию: ”

orderby(строка/массив)

Поле из таблицы БД по которому нужно отсортировать вывод. Можно указывать несколько полей через пробел или запятую. Можно указывать метаданные комментария:

Поля основной таблицы (comments):

  • comment_agent
  • comment_approved
  • comment_author
  • comment_author_email
  • comment_author_IP
  • comment_author_url
  • comment_content
  • comment_date
  • comment_date_gmt
  • comment_ID
  • comment_karma
  • comment_parent
  • comment_post_ID
  • comment_type
  • user_id

Метаполя. При этом должен быть установлен параметр $meta_key:

  • meta_value
  • meta_value_num

Чтобы сортировать по определенному метаполю из параметра $meta_query, задайте индекс для запроса $meta_query, а тут впишите этот индекс.

Можно указать несколько полей в массиве. При этом в индексе нужно указать название поля, а в значении направление сортировки. Например: array(‘comment_date’=>’ASC’, ‘comment_karma’=>’DESC’) Подробнее читайте здесь.

Можно указать false, array() или ‘none’, чтобы отключить часть запроса ORDER BY.

По умолчанию: ‘comment_date_gmt’

к началу

order(строка)
Порядок сортировки: ASC (123), DESC (321). Игнорируется если в orderby указан ассоциативный массив.
По умолчанию: DESC

number(число)
Ограничения выводимых комментариев (укажите макс. число). Оставьте пустым, чтобы получить все комментарии.
По умолчанию: ”

offset(число)
Количество комментариев, которые нужно пропустить с начала (сверху результата). Используется для построения SQL LIMIT части запроса. Применяется для создания пагинации.
По умолчанию: 0

no_found_rows(логический)
Нужно ли отключить SQL_CALC_FOUND_ROWS в запросе.
По умолчанию: true

meta_key(строка)
Получить комментарии с указанным мета ключом.
По умолчанию: ”

meta_value(строка)
Получить комментарии с указанным значением метаполя. Должен быть указан параметр meta_key.
По умолчанию: ”

meta_query(массив)
Для создания сложных запросов по метаданным. Заменяет параметры meta_key и meta_value. Работает также как meta_query в WP_Query.
По умолчанию: ”

date_query(массив)
Фильтр по дате комментариев. Смотрите WP_Date_Query
По умолчанию: null

fields(строка)
Поля которые будут возвращены. Может быть ids – получит только ID комментариев, или пусто – получит все поля.
По умолчанию: ”

type(строка/массив)
Тип комментариев которые нужно получить. Можно указать несколько типов в массиве. Может быть: comment (равно ), pings (включает pingback и trackback), или любой другой произвольный тип.
По умолчанию: ” (comment)

type__in(строка/массив)
Получить только комментарии с указанным типом.
По умолчанию: ”

type__not_in(строка/массив)
Получить все комментарии, кроме комментариев с указанным типом.
По умолчанию: ”

hierarchical(строка/логический)

Нужно ли включить дочерние комментарии в результат. Можно указать следующие параметры:

  • ‘threaded’ — вернет дерево со всеми дочерними комментариям, расположенными в свойстве children класса WP_Comment

  • ‘flat’ — вернет «плоский» массив, комментарии и их дочерние комментарии.

  • false — дочерние комментарии не будут включены в результат.
Параметр игнорируется (устанавливается в false), когда $fields = ‘ids’ или ‘counts’.

По умолчанию: false

к началу

update_comment_meta_cache(логический)
Нужно ли сбросить мета-кэш для полученных комментариев?
По умолчанию: true

update_comment_post_cache(логический)
Нужно ли сбросить мета-кэш для записей (постов) комментариев?
По умолчанию: false
При использовании параметров типа post_* запрос строиться на базе таблицы записей wp_posts. И если например указать post_author__in, то будут получены все комментарии записей, авторами которых являются указанные пользователи.

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


Добавлено в версии 4.4.0. Сортировка по полю comment__in. Параметры: $update_comment_meta_cache, $no_found_rows, $hierarchical, $update_comment_post_cache, $parent__in, $parent__not_in.

Примеры

#1. Выведет все комментарии к посту 15 (включая спам и не одобренные):

$comments = get_comments('post_id=15');
foreach($comments as $comment){
	echo($comment->comment_author);
}

#2. Покажет 5 не одобренных комментариев:

$args = array(
	'status' => 'hold',
	'number' => '5',
	'post_id' => 1, // правильно post_id, а не post_ID
);
$comments = get_comments($args);
foreach($comments as $comment){
	echo($comment->comment_author . '<br />' . $comment->comment_content);
}

#3. Выведем на экран количество комментариев поста:

$args = array(
	'post_id' => 1, // используйте post_id, а не post_ID
		'count' => true // возвращает только count
);
$comments = get_comments($args);
echo $comments;

#4. Выведем количество комментариев пользователя:

$args = array(
	'user_id' => 1,
		'count' => true
);
$comments = get_comments($args);
echo $comments

#5. Выведем комментарии пользователя:

$args = array(
	'user_id' => 1, // ID пользователя

);
$comments = get_comments($args);
foreach($comments as $comment){
	echo($comment->comment_author . '<br />' . $comment->comment_content);
}

#6. Удалим, идущие подряд, одинаковые комментарии (сравниваем автора и контент комментария):

// Получим все комментарии с пустым аргументом number
$all_comments = get_comments( array('status' => 'approve', 'number'=>'') );

// массив который будет содержать ID дублей комментариев
$comment_ids_to_delete=array();

foreach( $all_comments as $k=>$c )
{
	$kk = ($k-1); // Предыдущий индекс комментария в массиве $all_comments
	$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 $k=>$v){
	wp_delete_comment($v);
}

#7 Получим последние комментарии списком

Этот код получает последние 10 комментариев в виде списка UL. Где текст комментария укорочен до 50 символов и является ссылкой на сам комментарий:

<?php
function get_comments( $args = '' ) {
	$query = new WP_Comment_Query;
	return $query->query( $args );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *